面試題34:二叉樹中和為某一值的路徑
題目:輸入一棵二叉樹和一個整數,列印出二叉樹中節點值的和為輸入整數的所有路徑。從樹的根節點開始往下一直到葉節點所經過的節點形成一條路徑。
思路:先序遍歷樹,用全域性變數LinkedList型別的 path 來記錄路徑,暴力回溯,tar 不停的遞減,直到 tar 為 0 並且當前結點為葉子結點,那麼找到正確的路徑 path,將其存入結果集中。
- 時間複雜度O(n),遍歷書中每個結點的時間複雜度
- 空間複雜度O(n),需要定義一個輔助陣列 path ,來儲存路徑,結果集不算再空間複雜度裡面。
class Solution {
// 定義兩個全域性變數比較好儲存並且返回,不用通過傳參或者函式返回值來修改
public LinkedList<List<Integer>> res = new LinkedList<>();
public LinkedList<Integer> path = new LinkedList<>();
public List<List<Integer>> pathSum(TreeNode root, int sum) {
recur(root, sum);
return res;
}
// 不要寫成 static ,不然裡面定義的成員都是 static 的,全域性變數的多個測試用例就會發生錯誤
void recur(TreeNode root, int tar) {
if (root == null) {
return ;
}
path.add(root.val);
tar -= root.val;
if (tar == 0 && root.left == null && root.right == null) {
res.add(new LinkedList(path));
}
recur(root.left, tar);
recur(root.right, tar);
// 因為 path 是全域性變數,當前結點遍歷完了,一定要進行回溯,
path.removeLast();
return ;
}
}
相關文章
- 劍指 Offer 34. 二叉樹中和為某一值的路徑二叉樹
- 劍指 Offer 34. 二叉樹中和為某一值的路徑(java解題)二叉樹Java
- 【劍指offer】二叉樹中和為某一值的路徑二叉樹
- JZ-024-二叉樹中和為某一值的路徑二叉樹
- (python版)《劍指Offer》JZ24:二叉樹中和為某一值的路徑Python二叉樹
- 【微軟面試一百題:4】在二元樹中找出和為某一值的所有路徑微軟面試
- 牛客題霸 [二叉樹中是否存在節點和為指定值的路徑] C++題解/答案二叉樹C++
- 二叉樹路徑總和二叉樹
- 二叉樹路徑查詢二叉樹
- 【演算法】在二元樹中找出和為某一值的所有路徑演算法
- 第 34 題:如何實現二叉查詢樹?
- 【模板題】 543. 二叉樹的直徑二叉樹
- 比酒量問題與二叉樹搜尋和路徑問題二叉樹
- 面試題7:重建二叉樹面試題二叉樹
- 二叉樹和為某種所有路徑二叉樹
- 刷題系類 - Python判斷二叉樹是否存在一條路徑滿足和值要求Python二叉樹
- 引數為二叉樹和一個整數,求所有和為該整數的路徑二叉樹
- 列印二叉樹的所有路徑二叉樹
- 面試題37:序列化二叉樹面試題二叉樹
- 輕鬆搞定面試中的二叉樹題目面試二叉樹
- [程式猿面試題精選100題]10.排序陣列中和為給定值的兩個數字面試題排序陣列
- LeetCode第 543 題:二叉樹的直徑(C++)LeetCode二叉樹C++
- 【LeetCode擊敗99%+】二叉樹路徑總和LeetCode二叉樹
- 二叉樹最大距離(直徑)二叉樹
- leetcode 每日一題 543 二叉樹的直徑 dfs方法LeetCode每日一題二叉樹
- 387,二叉樹中的最大路徑和二叉樹
- 【微軟面試題】在二叉搜尋樹中找最小的大於某個key值的節點微軟面試題
- 判斷二叉樹是否為滿二叉樹二叉樹
- 程式碼隨想錄day34 || 62 不同路徑,63 不同路徑||,343整數拆分,96 不同搜尋二叉樹二叉樹
- 幾道和「二叉樹」有關的演算法面試題二叉樹演算法面試題
- LeetCode題解(Offer26):判斷二叉樹A是否為二叉樹B的子樹(Python)LeetCode二叉樹Python
- 一道關於二叉樹的位元組面試題的思考二叉樹面試題
- 尋找陣列中和為定值的兩個數陣列
- 資料結構和演算法面試題系列—二叉樹面試題彙總資料結構演算法面試題二叉樹
- Leetcode 二叉樹題目集合 (看完這個面試不會做二叉樹題,辣條給你!!!!!)LeetCode二叉樹面試
- 雲端計算面試題:檔案定位路徑面試題
- LintCode 二叉樹中的最大路徑和二叉樹
- 124. 二叉樹中的最大路徑和二叉樹