題目描述
輸入一顆二叉樹和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。
輸入如圖所示的一顆樹,目標值為22,則輸出【10,12】和【10,5,7】
思路:前序遍歷整棵樹,當路徑上節點的和等於目標值時,將這條路徑儲存,然後繼續遍歷,直到節點為空返回。
public arraylist
integer
>> findpath(treenode root,int target)
arraylist
integer
>>
list
=new arraylist
integer
>>();
find(list,new arraylist<
integer
>(),root,target,0);
return
list;
}public
void find(arraylist
integer
>> resultlist,arraylist<
integer
>
list,treenode root,int target,int value)
list
.add(root.val);
value+=root.val;
if(target==value)
find(resultlist,list,root.left,target,value);
find(resultlist,list,root.right,target,value);
list
.remove(new
integer(root.val));
}
二叉樹中和為某一值的路徑
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 分析 用先序遍歷的方式遍歷二叉樹,初始時路徑為空。訪問乙個結點時若不到葉子結點且結點的和小於這個值那麼就把這個結...