LeetCode 二叉树的最大深度

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

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

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

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

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。
解法一:

递归求解。使用深度优先搜索 DFS,递归的完美应用,跟求二叉树的最小深度问题原理相同。

    public int maxDepth(TreeNode root) {
        return root == null ? 0 : (1 + Math.max(maxDepth(root.left), maxDepth(root.right)));
    }
解法二:

利用队列迭代求解。使用层序遍历二叉树,然后计数总层数,即为二叉树的最大深度。

    public int maxDepth(TreeNode root) {
        if (root == null) return 0;
        int res = 0;
        
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        
        while (!q.isEmpty()) {
            res++;
            int n = q.size();
            for (int i = 0; i < n; ++i) {
                TreeNode t = q.poll();
                if (t.left != null) q.offer(t.left);
                if (t.right != null) q.offer(t.right);
            }
        }
        return res;
    }

思路参考自 [LeetCode] Maximum Depth of Binary Tree 二叉树的最大深度

求二叉树的最小深度可以看这里 [LeetCode] Minimum Depth of Binary Tree 二叉树的最小深度

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容