递归真的懂了呀系列《自顶向下:二叉树的最大深度》

31 阅读1分钟

Problem: 104. 二叉树的最大深度

思路

递归:自顶向下,每一层把当前层的长度传下去,边界为子节点为空,max路径最大值

Code

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    //【自顶向下】
    int res = 0; //结果
    int path = 0; //子问题结算时,拷贝每一层的迭代变量
    public int maxDepth(TreeNode root) {
        dfs(root,0);
        return res;        
    }

    void dfs(TreeNode root, int path_level_Length){
        if(root == null){
            path = path_level_Length;
            res = Math.max(res,path_level_Length);
            return ;
        }
        path_level_Length++;
        dfs(root.left,path_level_Length);
        dfs(root.right,path_level_Length);
    }
}