首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

[Leetcode] 104. 二叉树的最大深度

  •  
  •   Acceml · 287 天前 · 972 次点击
    这是一个创建于 287 天前的主题,其中的信息可能已经有所发展或是发生改变。

    题目

    给定一个二叉树,找出其最大深度。

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

    说明: 叶子节点是指没有子节点的节点。

    示例: 给定二叉树 [3,9,20,null,null,15,7],

        3
       / \
      9  20
        /  \
       15   7
    

    返回它的最大深度 3。

    题解

    求最大深度,和深度相关,我们很容易想到用层序遍历。每遍历一层,就深度加 1, 怎么记录是第几层我们之前的文章中讲过了。

    /**
     * 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 depth = 0;
            LinkedList<TreeNode> queue = new LinkedList<>();
            queue.add(root);
            while (!queue.isEmpty()) {
                int size = queue.size();
                while (size > 0) {
                    TreeNode current = queue.poll();
                    if (current.left != null) {
                        queue.add(current.left);
                    }
                    if (current.right != null) {
                        queue.add(current.right);
                    }
                    size--;
                }
                depth++;
            }
            return depth;
        }
    }
    

    这道题用递归解代码比较简单. 递归的结束条件: 当节点为叶子节点的时候. 递归的子问题: 当前最大深度 = 左右子树最大深度的较大者 + 1

    代码实现就很简单了。

    class Solution {
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;    
        }
    }
    

    热门阅读

    Leetcode 名企之路

    4 回复  |  直到 2019-03-04 19:59:36 +08:00
        1
    jorneyr   287 天前
    Leetcode 题解下的文章索引不全,能否补全一下,这样好找一些。
        2
    qwertyegg   287 天前
    这种 leetcode easy 里面的简单题目,写这么一大篇感觉有点浪费资源。
        3
    wuhaochen999   286 天前
    直接 preorder traversal 不行吗
        4
    Acceml   283 天前
    @jorneyr 这两天补一下。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4123 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 08:01 · PVG 16:01 · LAX 00:01 · JFK 03:01
    ♥ Do have faith in what you're doing.