LeetCode二叉树OJ

目录

剑指 Offer 55 - I. 二叉树的深度 - 力扣(LeetCode)

965. 单值二叉树 - 力扣(LeetCode)

100. 相同的树 - 力扣(LeetCode)

 101. 对称二叉树 - 力扣(LeetCode)

二叉树遍历_牛客题霸_牛客网 (nowcoder.com)


查找二叉树中的x值

                   

剑指 Offer 55 - I. 二叉树的深度 - 力扣(LeetCode)

链式二叉树_敲代码到头晕的博客-CSDN博客

求二叉树高度那里。

965. 单值二叉树 - 力扣(LeetCode)

bool isUnivalTree(struct TreeNode* root){
if(root==NULL)
    return true;
if(root->left&&root->val!=root->left->val)
return false;
if(root->right&&root->val!=root->right->val)
return false;

return isUnivalTree(root->left)
        &&isUnivalTree(root->right);
}

 

 

100. 相同的树 - 力扣(LeetCode)

思路:
一:如果p和q都不等于空,那么就返回true,因为有可能是这样的:

 那万一是这种的呢?

 所以我们下面要设置其他条件,递归对比的时候让p的左和q的左对比,p的右和q的右对比,这样就只会出现1这种情况,不会出现2这种情况了。

 二:

如果p和q其中只有一个为空,那么两个二叉树肯定不相同

三:如果p和q的值相同,那么两个二叉树就相同

那这样写:

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if(p==NULL&&q==NULL)
 return true;
if(p==NULL||q==NULL)
return false;
if(p->val!=q->val)
return true;

return  isSameTree(p->left,q->left)
    && isSameTree(p->right,q->right);

}

运行看看:

 为什么结果是true呢?

 第一次对比相同直接把值返回了,递归就没办法往下继续对比了,剩下的节点值可能是不相同的

 所以做这种题都得逆向思维,不要返回true,要返回false,这样false的部分就确定了,没确定的true部分让递归去确定。

 101. 对称二叉树 - 力扣(LeetCode)

二叉树遍历_牛客题霸_牛客网 (nowcoder.com)

 把输入的这串字符还原成二叉树的逻辑图,#代表空。

 还原如下:

 

 是怎么还原的呢?首先把这串字符当成一个字符串数组,然后用数组下标来遍历这个字符串。

 OK,接下来我们要写代码来实现一下。

数组下标不是整形,因为我们定义的pi为int* ,所以我们要解引用Pi,让它找到Int i;

pi本身就是int*型的,这里递归应该直接传pi的不应该传*pi,不然pi就成int**型了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙鹏宇.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值