面試題 求根到葉子節點數字之和

2021-10-24 22:19:48 字數 1379 閱讀 7363

給定乙個二叉樹,它的每個結點都存放乙個 0-9 的數字,每條從根到葉子節點的路徑都代表乙個數字。

例如,從根到葉子節點路徑 1->2->3 代表數字 123。

[1,2,3] 根到葉子是 1-2與1-3 因此和是12+13=25

這題也是leetcode上面的129題

二叉樹的操作一般是遞迴+回溯

我比較喜歡的寫法是(因為很多遞迴問題傳入引數就是引用)

class

solution

if(root-

>left==

null

&&root-

>right==

null

) temp=temp*

10+root-

>val;

//這個一定要注意,回溯過程

get(root-

>left, temp, sum)

;get

(root-

>right, temp, sum)

; temp=

(temp-root-

>val)/10

;//回溯

return;}

public

:int

sumnumbers

(treenode* root)

//temp 代表之間節點的值

};

裡面可以發現 temp採用引用方式比較麻煩,我們也可以不用temp的引用

**為

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

if(root-

>left==

null

&&root-

>right==

null

) temp=temp*

10+root-

>val;

get(root-

>left, temp, sum)

;get

(root-

>right, temp, sum)

;return;}

public

:int

sumnumbers

(treenode* root)

//temp 代表之間節點的值

};

會發現不加引用的話就是

temp=(temp-root->val)/10;//這行刪除了,但是要明白裡面究竟發生了什麼,引用就是別名,引用改變,原值也會改變的。

求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1 2,3 1 2 3輸出 25解釋 從根到葉子節點路徑 1 2 代...

129 求根到葉子節點數字之和

有一篇講得非常好的 先說一下一開始的錯誤,首先是在遇到葉子節點以後企圖將temp clear調,這樣是完全不對的 因為temp全域性的,清空temp會讓除了該葉子節點以外的前面的節點也清除掉。這樣比如說訪問完某個節點的左子樹以後,再訪問該節點的右子樹時,根節點已經不在裡面了。所以,不行。考慮到上面那...

129 求根到葉子節點數字之和

給定乙個二叉樹,它的每個結點都存放乙個 0 9 的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑 1 2 3 代表數字 123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3輸出 25 解釋 從根到葉子節點路徑...