【发布时间】:2015-06-13 03:47:48
【问题描述】:
我正在尝试使用堆栈找到二叉树中从根节点到叶节点的最大总和。 我编写了以下代码,但其中有一个错误。
Stacks s;
s.push(root);
maxSum=currSum=0;
while(!s.isEmpty()) {
temp = s.top();
s.pop();
if( temp->left == null && temp->right == null ) {
currSum = currSum+temp->data;
if(currSum > maxSum) {
maxSum = currSum;
}
currSum =0;
} else {
currSum = currSum + temp->data;
if(temp->left) s.push(temp->left);
if(temp->right) s.push(temp->right);
}
}
我要做的是计算叶节点的总和并将其分配给 maxSum。
例如:- 二叉树是
1
/ \
2 3
/ \
4 5
1)我先按 1 和 pop 。当前总和 =1;
2) 推 3 和 2 并弹出 2. cursum = 3 并推 5 和 4;
3) 堆栈现在看起来像 4
4)现在 4 是叶节点,我输入 if loop 并添加 currSum = 3+4=7 并弹出 4 。
5)现在 temp 为 5,我设置 currSum=0,所以当我弹出 5 时 currSum 变为 5 。
谁能帮我解决这个问题
【问题讨论】:
标签: binary-tree