1宵晚、遞歸是解決樹的相關(guān)問題最有效和最常用的方法之一闺鲸,但我們遇到樹的問題時,可以考慮用遞歸解決。
2派任、兩種遞歸方式:
(1)自頂向下的遞歸
當(dāng)滿足兩個條件時考慮用自頂向下的遞歸:
1??確定某個節(jié)點的參數(shù)砸逊,從這個節(jié)點自身出發(fā)尋找答案;
2??使用該 節(jié)點參數(shù)的值 和 節(jié)點本身的值 來決定傳給子節(jié)點什么參數(shù)掌逛。
(2)自底向上的遞歸
當(dāng)滿足一下條件時考慮用自底向上的遞歸:
對于樹中的任意一個節(jié)點师逸,如果你知道它子節(jié)點的答案,可以計算出該節(jié)點的答案颤诀,考慮用自底向上的遞歸字旭。
3、自頂向下的遞歸舉例
(1)求二叉樹的最大深度
輸入:[3,9,20,null,null,15,7]
輸出:3
方法一:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int maxDepth(TreeNode root) {
if(root == null){
return 0;
}
int res = Math.max(maxDepth(root.left),maxDepth(root.right))+1;
return res;
}
}