二叉树的最大深度

二叉树的最大深度,第1张

代码实现:

public class MaxDepth {
    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;
        }
    }

    //通过层序遍历的方法获取最大高度
    public int maxDepth1(TreeNode root) {
        int depth = 0;
        if (root == null) return depth;
        List list = new ArrayList<>();
        list.add(root);
        while (!list.isEmpty()) {
            depth++;
            List temp = new ArrayList<>();
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i).left != null) {
                    temp.add(list.get(i).left);
                }
                if (list.get(i).right != null) {
                    temp.add(list.get(i).right);
                }
            }
            list = temp;
        }
        return depth;
    }


    //有点像动态规划  叶子节点的时候是 1 ,公式 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
    public int maxDepth(TreeNode root) {
        return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }
    
}

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/729668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存