[Leetcode][第112题][JAVA][路径总和][递归][队列]
生活随笔
收集整理的這篇文章主要介紹了
[Leetcode][第112题][JAVA][路径总和][递归][队列]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】[中等]
【解答思路】
1. 遞歸
時間復雜度:O(N) 空間復雜度:O(H)
從根節點開始,每當遇到一個節點的時候,從目標值里扣除節點值,一直到葉子節點判斷目標值是不是被扣完。
聲明一個變量記錄已經經過的節點的值之和,每經過一個節點就加上這個節點的值,在葉子節點判斷變量值是否為目標值。
public boolean hasPathSum(TreeNode root, int sum) {return helper(root,0,sum);}public boolean helper(TreeNode root,int cur,int sum){if(root==null)return false;cur=cur+root.val;if(root.left==null&&root.right==null){return cur==sum;}else{return helper(root.left,cur,sum)|| helper(root.right,cur,sum);}}。2. 廣度優先搜索
時間復雜度:O(N) 空間復雜度:O(N)
【總結】
1.注意事項
2.數的遞歸
樹的遞歸題目是非常有套路可循的,因為樹有兩個分支,所以在遞歸里也有兩個分支,一般是通過 遞歸 A(||,&&)遞歸 B 來實現分支的。只要明白了這一點,遞歸函數就不會很難設計。
3.巧妙使用了兩個隊列 一個隊列保存遍歷節點 另一節點保存和
參考鏈接:https://leetcode-cn.com/problems/path-sum/solution/lu-jing-zong-he-by-leetcode-solution/
參考鏈接:https://leetcode-cn.com/problems/path-sum/solution/lu-jing-zong-he-jie-da-by-commonheart/
總結
以上是生活随笔為你收集整理的[Leetcode][第112题][JAVA][路径总和][递归][队列]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nowcoder-linux
- 下一篇: [密码学基础][信息安全][每个信息安全