private void sumNode(TNode node) {
int sum = 0;
if (node == null)
return;
sumNode(node.getLeft());
sumNode(node.getRight());
if (node.getLeft() != null && node.getRight() != null) {
sum = (node.getData() + node.getLeft().getData() + node.getRight()
.getData());
} else if (node.getLeft() != null) {
sum = (node.getData() + (Integer) node.getLeft().getData());
} else if (node.getRight() != null) {
sum = (node.getData() + node.getRight().getData());
} else {
sum = 0;
}
node.setData(sum);
}
我知道我的方法是完全錯誤的 - 我不知道如何執行此操作。將節點的值替換爲其所有後代的總和
我想把每個節點的值都替換成它所有後代的總和,誰能指導我怎麼做?
我已經跑出瞭如何解決這個問題的想法。即使僞代碼將不勝感激。
的問題是:
- 我的樹有:
5 2 1 3 6 8
- 結果是:
0 0 2 0 6 13
, - 預期的結果是:
0 0 4 0 8 20
你需要使sumnode1遞歸(調用它自己的左邊和右邊的項目),在調整當前節點值之前,根據它的孩子 – forsvarir 2011-05-11 11:36:46
嗨,我已編輯,我仍然無法得到正確的答案 – user236501 2011-05-11 11:39:11
@ user236501:請參閱我的答案。 .. – forsvarir 2011-05-11 12:11:19