美文网首页算法
LeetCode104. 二叉树的最大深度

LeetCode104. 二叉树的最大深度

作者: Timmy_zzh | 来源:发表于2021-09-14 10:15 被阅读0次
    1.题目描述
    • 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
      • 说明: 叶子节点是指没有子节点的节点。
    示例:
    给定二叉树 [3,9,20,null,null,15,7],
        3
       / \
      9  20
        /  \
       15   7
    返回它的最大深度 3 。
    
    2.解题思路:
    • 2.1.递归解法
      • dfs 深度优先遍历
      • 后续遍历,当前节点的深度,等于左右子树的深度最大值,加上1
        public int maxDepth(TreeNode root) {
            if (root == null) {
                return 0;
            }
            int lefeD = maxDepth(root.left);
            int rightD = maxDepth(root.right);
            return Math.max(lefeD, rightD) + 1;
        }
    
    • 2.2.bfs:广度优先遍历
      • bfs:广度优先遍历,从根结点开始不断往下层遍历,直到遍历到叶子结点
      • 使用一个集合保存树中每层遍历的节点,然后再取出这一层的节点,并把这一层节点的左右子节点添加到集合中用于下层节点的遍历
        public int maxDepth_v1(TreeNode root) {
            if (root == null) {
                return 0;
            }
            LinkedList<TreeNode> list = new LinkedList<>();
            list.add(root);
            int depth = 0;
            while (!list.isEmpty()) {
                int size = list.size();
                while (size > 0) {
                    TreeNode node = list.poll();
                    if (node.left != null) {
                        list.add(node.left);
                    }
                    if (node.right != null) {
                        list.add(node.right);
                    }
                    size--;
                }
                depth++;
            }
            return depth;
        }
    
    3.总结
    • 题解总结
      • 二叉树的层级,可以使用层序遍历或后序遍历求解

    相关文章

      网友评论

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

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