• 3.27

  • 2.11

    • 两种方式,一种原地记录 maxD,一种辅助函数传入 currentD,在开头更新
  • 1.26

class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null) return 0;
        int leftD = maxDepth(root.left);
        int rightD = maxDepth(root.right);
        // 我的深度就是它们中最大的那个,再加上我自己的这 1 层
        int maxD = Math.max(leftD,rightD)+1;
        return maxD;
    }
}
  • 1.16

    • 初始传入时,深度默认为 1,又忘了递归,又忘了 currentDepth 和 maxDepth,累了
  • 11.11

    • 深度遍历其实没啥,这点没卡
    • 进入dfs需要判空+更新depth(与上一个临时depth比较)
class Solution {
    private int depth = 0;
    public int maxDepth(TreeNode root) {
    //     int depth=0;
    //     orderIn(root,depth);   
    //     return depth;
    // }
    // public void orderIn(TreeNode root,int depth){
    //     if(root==null){
    //         return;
    //     }
    //     orderIn(root.left,depth);
    
    //     orderIn(root.left,depth);
    //     depth++;
    // }
            dfs(root,1);
            return depth;
    }
	private void dfs(TreeNode root,int currentDepth){
		if(root==null){return;}
		depth=Math.max(depth,currentDepth);
		dfs(root.left,currentDepth+1);
		dfs(root.right,currentDepth+1);
	}
 
}
  • 深度优先遍历
  • 每次进入遍历带入深度,与总记录深度做比较做出最大的深度更新为总深度