首页 > 其他 > 详细

104. 二叉树的最大深度

时间:2021-04-10 00:11:22      阅读:10      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

1. 使用DFS解法

递归计算每颗字数的最大深度

时间O(n)(每个节点都要被遍历一次),空间O(h)(与递归深度有关,递归深度又与二叉树高度相关)

public int maxDepth(TreeNode root) {
        if (root==null) return 0;
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        // 比较左右子树的最大深度,并加上根节点的高度
        return Math.max(left,right)+1;
    }

 

2. 使用BFS解法

广度优先遍历的方案,我们使用2层循环,一个循环控制整棵树所有节点是否遍历完比

第二层循环控制每一层的节点是否遍历完毕。

时间O(n)(每个元素都遍历一遍),空间O(m)(m为整棵树节点最对的一层的节点数,最坏情况下完全二叉树叶子节点个数n/2)

    public int maxDepth(TreeNode root) {
        if (root==null) return 0;
        Deque<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);
        int res=0;
        while(!queue.isEmpty()){
            int size = queue.size();
            // 获取当前队列中的节点个数,即获取整棵树每一层的节点个数
            while(size>0){
                TreeNode temp = queue.poll();
                if(temp.left!=null) queue.add(temp.left);
                if(temp.right!=null) queue.add(temp.right);
                // 本层节点-1
                size--;
            }
            // 每扫描完一层需要将相应深度+1
            res++;
        }
        return res;
    }

 

104. 二叉树的最大深度

原文:https://www.cnblogs.com/jchen104/p/14637081.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!