演算法打卡(六) 根節點到葉子節點之和

2021-10-18 04:18:07 字數 1107 閱讀 9641

力扣:112

問題描述:

給你二叉樹的根節點root和乙個表示目標的整數targetsum,判斷該樹中是否存在根節點到葉子節點之和等於目標值。

其實這道題就是一道廣度優先遍歷的題,遍歷所有的葉子節點到根節點的路徑之和再與目標值進行比對,如果相等則返回true,否則返回false。

這裡我們以這個二叉樹來進行具體分析。

我們求一條根節點到葉子節點和為22的路徑,判斷該二叉樹是否存在這樣的路徑。

//這個佇列是用於存放即將要遍歷的結點

queuequenode=new linkedlist<>();

//這個佇列是用於存放根節點到當前節點的路徑之和

這道題還可以用遞迴方法來進行求解。使用遞迴我們就要從方法的引數上來進行考慮。當我們使用遞迴的時候就需要和廣度優先遍歷的思想相反,我們在廣度優先遍歷的時候是逐漸向目標值靠近,而我們使用遞迴的時候是相反,逐漸向節點資料值靠近。

public boolean haspathsum(treenode root, int sum) 

if (root.left == null && root.right == null)

return haspathsum(root.left, sum - root.val) || haspathsum(root.right, sum - root.val);

}

資料結構例程 從根節點到每個葉子節點的路徑之逆

本文是資料結構基礎系列 6 樹和二叉樹中第11課時二叉樹遍歷非遞迴演算法和第12課時層次遍歷演算法的例程。問題 設計演算法輸出從根節點到每個葉子節點的路徑之逆。解法1 利用二叉樹後序遍歷非遞迴演算法中,每乙個葉子節點出現時,棧中從棧頂到棧底,正好是葉子節點到根節點的逆序的性質編寫。參考解答 btre...

部落格294 求樹的根節點到葉子節點的所有路徑

內容 求樹的根節點到所有葉子節點的路徑 思路 1 遞迴思路,以葉子節點為結束條件 2 遞迴過程中,用vector記錄從根節點往下遍歷時的上層結果 給定乙個二叉樹,返回所有從根節點到葉子節點的路徑。definition for a binary tree node.struct treenode cl...

輸出所有根節點到葉子節點的長度 以二叉排序樹為例

cpp include include using namespace std 節點 struct node 二元查詢樹 class list void list m print node p,int value 向左右方向遞迴 m print p lchild,value m print p rc...