572. Subtree of Another Tree Medium
来源:互联网 发布:英雄联盟for mac美服 编辑:程序博客网 时间:2024/06/06 17:26
第一次做二叉树的题目。首先要知道,二叉树的题目,大部分都可以用递归来解决。
对于这道题,我们先考虑一个子问题,怎么样判断两棵树是不是相同的树。我们可以先比较两个树根,这里分几种情况:
1.两个树根都是空,则树相同。
2.两个树根只有一个为空,则肯定不相同。
3.两个树根都不为空,这里分两种情况:树根处的值相等,那我们需要继续比较他们的儿子是否相等;如果值不相等,则树不相等。
如果要继续比较的话,我们需要他们的左儿子和右儿子都相等,这其实是一个"&&"的关系。递归版代码如下:
bool isSame(TreeNode* s, TreeNode* t) { if(s == NULL && t == NULL)return true; if(s == NULL || t == NULL)return false; if(s->val != t->val)return false; return isSame(s->left, t->left) && isSame(s->right, t->right); }
解决了这个子问题,我们剩下要做的,就是遍历s这个树,找跟t的树根的值一样的顶点,然后判断它们是不是一样就可以。遍历一个顶点时,如果是t的树根的值一样,判断一下,如果一样,返回true就可以;如果不是,因为我们还要继续找,不能返回false。如果这个顶点跟t的根不一样,怎么办?其实这里是“||”的关系,这个顶点不一样没关系,它的左子树或右子树有一个一样就可以了。代码如下:
bool isSubtree(TreeNode* s, TreeNode* t) {
if(s == NULL || t == NULL)return false;
if(s->val == t->val)
if(isSame(s, t))return true;
return isSubtree(s->left, t) || isSubtree(s->right, t);
}
0 0
- 572. Subtree of Another Tree Medium
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- 572. Subtree of Another Tree
- Subtree of Another Tree
- Subtree of Another Tree
- 572. Subtree of Another Tree(Easy)
- [LeetCode]572. Subtree of Another Tree
- [leetcode]: 572. Subtree of Another Tree
- 查找两个节点最近的公共祖先
- JavaWeb如何学?
- [codewars]3.制作一个程序来过滤字符串列表,并返回一个列表,只有你的朋友的名字。 如果一个名字中有4个字母,那么你可以确定它是你的朋友!
- Vector与ArrayList的简单区别
- 利用反射重写tostring方法
- 572. Subtree of Another Tree Medium
- Oracle Coherence运维监控
- Java面试
- Android Studio 开发百度地图第一步
- 结构定义
- windows 批处理脚本(batch scripting)
- oracle 简单增删改查语句汇总
- HDU 6027 Easy Summation
- JavaScript 通过function创建对象的思考