首页 > 其他 > 详细

剑指 Offer 55 - I. 二叉树的深度

时间:2021-02-03 18:13:01      阅读:25      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

 

思路:

技术分享图片

 

 

 

统计层数,一开始想能不能dfs做,但怎么想感觉都不好做(脑袋里还是遍历的想法),然后自然就想到层序遍历,然后每次经过一层加一就行

class Solution {
    public int maxDepth(TreeNode root) {
        if(root==null)
        {return 0;}
        Queue<TreeNode> queue=new LinkedList<>();
        int result=0;
        queue.add(root);
        while(queue.size()!=0)
        {
            result++;
            int count=queue.size();
            for(int i=0;i<count;i++)
            {
                root=queue.poll();
                if(root.left!=null)
                {queue.add(root.left);}
                if(root.right!=null)
                {queue.add(root.right);}
            }
        }
        return result;

    }
}

 

接着看到了递归写法

其实用递归思考这道题目不需要想这是什么遍历(其实是后序),逻辑已经足够清晰了:

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

 

这两个的时间复杂度应该是一样的,不知道为什么迭代出来时间会长一些

 

剑指 Offer 55 - I. 二叉树的深度

原文:https://www.cnblogs.com/take-it-easy/p/14367913.html

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