題目:輸入一顆二叉樹的根節點和乙個整數,按字典序列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑
本題要求找到從根節點到各個葉子節點的每一條路徑,並把路徑上的所有節點之和與某個數相比較,這符合深度優先遍歷(dfs)的特點。執行步驟如下:
1. 將傳入方法的節點的值加入路徑列表的list
2.判斷該節點有無孩子節點
(1) 若沒有孩子節點,則該節點為葉子節點,表示該路徑已經走完。比較該節點值和目標值target是否相同,相同則把路徑列表list新增到結果列表中
(2)若有孩子節點,表示該路徑還沒有走完,開始遞迴:
a.左孩子不為空,將左孩子節點及新的目標數值(target-該節點值)作為引數傳入,實現對左孩子的深度優先遍歷
b.有孩子不為空,進行相同的操作
3.以上幾步完成後,表示本次方法中的節點及左右孩子已經被遍歷完畢,也就是說經過本節點的路徑已經統計完畢,此時對路徑list進行回溯,移除最後乙個元素。
public class solution
public void dfs(treenode root,int target,arraylistlist)
list.add(root.val);
target-=root.val;
if(target==0 && root.left==null && root.right==null)
else
list.remove(list.size()-1);
}}
劍指Offer 二叉樹 二叉樹中和為某一值的路徑
輸入一棵二叉樹和乙個整數,列印出二叉樹中節點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。示例 給定如下二叉樹,以及目標和 sum 22 返回 解題思路 演算法流程 實現 definition for a binary tree node.class tree...
劍指offer 二叉樹 二叉樹中和為某一值的路徑
題目描述 輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 參 coding utf 8 class treenode def init self,x ...
二叉樹中和為某一值得路徑 劍指Offer
輸入一顆二叉樹的根節點和乙個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。注意 在返回值的list中,陣列長度大的陣列靠前 首先需要遞迴遍歷整棵樹,遍歷完每一條路徑,遍歷的順序是先根節點,然後是左節點,接著是右節點 如果節點的...