美文网首页
二叉树的最大深度104.

二叉树的最大深度104.

作者: 宗驴 | 来源:发表于2024-03-24 11:11 被阅读0次

需求

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

二叉树
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:
输入:root = [1,null,2]
输出:2

leetcode题目链接

概念

二叉树深度:二叉树任意一个节点到根节点的距离,包含自己。前序遍历
二叉树高度:二叉树任意一个节点到叶子节点的距离,包含自己。后续遍历

思路:
上面我们了解了高度与深度的概念,这个题要去是求二叉树的最大深度,正因为树的最大深度等于最大高度,所以我们求高度还是深度就无所谓了。

/**
 * 104. 二叉树的最大深度
 * 这里整个二叉树的高度等于深度
 */
public class MaxDepth104 {
    public int maxDepth(TreeNode root) {
        // 最后一层节点后均为null, null的高度为0
        if (root == null) return 0;
        int leftHigh = maxDepth(root.left);
        int rightHigh = maxDepth(root.right);
        // 最后一层节点后均为null,返回0,再加1最后一层高度为1
        // 每一层+1向上反
        return 1 + (leftHigh > rightHigh ? leftHigh : rightHigh);
    }

    /**
     * 递归精简
     */
    public int maxDepthJJ(TreeNode root) {
        if (root == null) return 0;
        return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
    }

    /**
     * 广度遍历/层序遍历
     */
    public int maxDepthGd(TreeNode root) {
        if(root == null) return 0;
        int high = 0;
        ArrayDeque<TreeNode> deque = new ArrayDeque<>();
        deque.add(root);
        while (!deque.isEmpty()) {
            int size = deque.size();
            high++;
            while (size-- > 0) {
                TreeNode node = deque.poll();
                if(node.left != null) deque.add(node.left);
                if(node.right != null) deque.add(node.right);
            }
        }
        return high;
    }

}
验证结果

相关文章

网友评论

      本文标题:二叉树的最大深度104.

      本文链接:https://www.haomeiwen.com/subject/favxtjtx.html