做视频的网站,上海网站建设公司指南,网站开发员招聘,网站的建立与运营哈喽伙伴们#xff0c;有一段时间没更新博客了#xff0c;主要是这段时间要准备学校的期末考试#xff0c;所以没有把部分时间分给博客#xff0c;今天我们一起去接着看二叉树递归有关的OJ题#xff0c;今天我们要学习的是 判断相同的树#xff0c;力扣题目--100 有一段时间没更新博客了主要是这段时间要准备学校的期末考试所以没有把部分时间分给博客今天我们一起去接着看二叉树递归有关的OJ题今天我们要学习的是 判断相同的树力扣题目--100 直达链接 https://leetcode.cn/problems/same-tree/ 我们先看这道题的题目要求给我们两棵树的根节点p,q让我们判断两棵树是否相同无非就是判断两棵树相应的根节点是否相等那我们就可以开始入手做题。首先我们要先判断两棵树同时为空的情况那就返回true即
if(pNULLqNULL)//两棵树同时为空{return true;}
两棵树都为空的情况判断了还有一棵树为空一棵树不为空的情况呢还是一样的套路即 if(pNULL||qNULL)//只有一颗树为空{return false;}
为什么这么写大家明白吗代码能进到这个if里面前提是两棵树不能同时为空了所以我们用||就可以判断有一棵树为空的情况如果如果pNULL就不会判断后面qNULL如果p!NULL,会进行判断qNULL只要是满足二者中的一种情况那这两棵树就不会相等就会返回false。
树为空的情况判断了代码继续往下走就是不是空树那就直接判断p和q的val是否相等即
if(p-val!q-val)//判断p和q的val{return false;}
如果p和q的val不相等的话那这两棵树注定是不相同的无需往下继续走直接就可以返回false。
再往下走的话就证明p和q作为两棵树的根结点是相等的我们可以递归判断两棵树的左子树和右子树即
return isSameTree(p-left,q-left)isSameTree(p-right,q-right);//递归判断左右子树
代码到这里就写完了我们运行提交 完整代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {if(pNULLqNULL){return true;}if(pNULL||qNULL){return false;}if(p-val!q-val){return false;}return isSameTree(p-left,q-left)isSameTree(p-right,q-right);
}