leecode104——二叉树的最大深度

这篇具有很好参考价值的文章主要介绍了leecode104——二叉树的最大深度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二叉树的最大深度,使用递归遍历搜索,如果知道了左右子树的最大深度,那么二叉树的最大深度为:max(l,r)+1

左子树与右子树的最大深度可以通过递归遍历(深度优先搜索)得到,首先:
递归三部曲:(1)确定递归的参数和返回值,因为要比较的是左右子树的最大深度,所以每次传入的根节点,返回最大深度,即int类型的数字
(2)递归的终止条件:当跟节点为空,说明高度为0或者遍历到该节点的左右孩子为叶子节点,即到达最后一层。
(3)单层递归的逻辑:遍历左右子树的高度,返回左右子树最大值+1
class Solution {
    public int maxDepth(TreeNode root) {
         
            if(root==null){
                return 0;
            }else{
            int leftDepth=maxDepth(root.left);
            int rightDepth=maxDepth(root.right);
            int count=Math.max(leftDepth, rightDepth) + 1;
            // if(leftDepth>0||rightDepth>0){
            //     count++;
            // }
            return count;
         }
           

    }
}

我最开始的时候,想着在else中定义一个count=0,每次遍历左右子树不为空则加1,后来发现,那每次进入这个count都等0,再怎么加都只可能是1。
在最开始没有判断根节点是否为空,当根节点为空时应该返回0,但这段代码没有处理这种情况。

class Solution {
    public int maxDepth(TreeNode root) {
            int count=0;
        // if(root==null){
        //     return 0;

        // }
    
            int left=maxDepth(root.left);
            int right=maxDepth(root.right);
            if(left!=null||right!=null){
                count++;
            }
            return count;
		}
    }

count的初始值应该为1,因为根节点的深度为1,而不是0。
left和right在递归调用时,当节点为空时会返回0,而不是null。
在判断left和right是否为空时,应该使用left > 0 || right > 0,因为节点的深度是从1开始计算的,而不是0。文章来源地址https://www.toymoban.com/news/detail-438438.html

到了这里,关于leecode104——二叉树的最大深度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包