從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
樣例給出二叉樹如下所示,並給出num=22。5/
4 6/ /
12 13 6
/ \ /
9 1 5 1
輸出:[[5,4,12,1],[5,6,6,5]]
思路:用遞迴從根節點到子節點遍歷,然後用sum每次減去節點自己的值,直到到達葉節點並且此時的sum值為0,由於可能存在多條合適路徑,所以在遞迴到最深處時還要回到根節點以便從另一條路上進行排查,
用乙個res記錄當前路徑,在判斷他是否滿足條件後,無論怎樣,每一步都要減去新進去的節點,以便返回到根節點時路徑為空
class solution
dfs(root,sum);
return all;
}private void dfs(treenode root, int sum)
if(root.left!=null)dfs(root.left,sum);
if(root.right!=null)dfs(root.right,sum);
res.remove(res.size() - 1);//為了遞迴回root路徑為空
}}
二叉樹中和為某一值的路徑
include include using namespace std struct node void find path node r,int exceptedsum,vector path,int cursum node buildbtree int a,int i void preorder...
二叉樹中和為某一值的路徑
要輸出所有的路徑,必須額外用乙個棧來儲存當前路徑資訊。當訪問到節點a時,節點a的資訊要在訪問a的左右子樹時用到,因而,該資訊必須在遍歷a的左右子樹前加入到棧中,而在遍歷完a的左右子樹後從棧中移除。每訪問乙個節點,就計算當前路徑值 可直接利用父節點的路徑值 當其等於給定值且當前節點是葉子節點時,就列印...
二叉樹中和為某一值的路徑
面試題25 二叉樹中和為某一值的路徑 struct binarytreenode int value binarytreenode pleft binarytreenode pright 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...