輸入一顆二叉樹的跟節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(注意: 在返回值的list中,陣列長度大的陣列靠前)
1public
class
treenode
1112 }
1public
class
solution
1213
arrayin.add(root.val);
1415 target = target - root.val; //
求剩餘路徑的長度和
1617
if (target == 0 && root.left == null && root.right == null
) 22
23 findpath(root.left, target); //
遞迴左子樹
24 findpath(root.right, target); //
遞迴右子樹
25 arrayin.remove(arrayin.size() - 1);
26//
這句話的就是在遞迴回溯的時候,它會移除掉當前arrayin陣列最後乙個元素
27//
相當於退回一步,用arrayin的前乙個元素去執行當前遞迴的上乙個遞迴(畫乙個遞迴圖回溯就會明了)。
28//
因為這裡的arrayin是共用的,而真正屬於自己的是new arraylist<>(arrayin)
2930
return
arrayout;
3132
}33 }
二叉樹中和為某一值的路徑
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 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...