图解单值二叉树和二叉树最大深度

目录

单值二叉树

 思路

二叉树最大深度

 思路:

 实现代码

 图解代码


单值二叉树

力扣

 思路

左子树和跟比看是否相同,右子树和跟比看是否相同 一直递归下去

 


bool isUnivalTree(struct TreeNode* root){

    if(root == NULL)
    return true;

     //注意root->left!= NULL 否者会出现NULL访问val
    if(root->left && root->val != root->left->val)
    return false;
    if(root->right && root->val != root->right->val)
    return false;
    //左右子树递归时要用 && 返回值要么为1(true),要么为假(0);
    return  isUnivalTree(root->left) && isUnivalTree(root->right);
      
}

 

二叉树最大深度

力扣

 思路:

任何一颗二叉数都可以看作,根+左子树+右子树 所以找出左右子树较大深度的那个+1就是其深度 

 实现代码


int maxDepth(struct TreeNode* root){
     //没有节点,既深度0
    if(root == NULL)
    return 0;
       //先保存一下左右子树 再用三目操作符
       //直接递归的话递归的次数会变得巨大
    int lefttree = maxDepth(root->left);
    int righttree = maxDepth(root->right);

       //左右子树相比 较大的那个+1 
    return lefttree > righttree ? lefttree+1:righttree+1;

}

 图解代码

建议对递归不是很了解的hxd多多画图, 递归这一类的题画图能更好的理解

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值