15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)
Posted yjxyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)相关的知识,希望对你有一定的参考价值。
Level:
??Easy
题目描述:
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node‘s descendants. The tree s could also be considered as a subtree of itself.
Example 1:
Given tree s:
3
/ 4 5
/ 1 2
Given tree t:
4
/ 1 2
Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given tree s:
3
/ 4 5
/ 1 2
/
0
Given tree t:
4
/ 1 2
Return false
思路分析:
??判断t树是否为s树的子树,先在s中找到和t根节点相同的节点,然后从该节点出发判断是否存在与t完全相同的结构。
代码:
public class TreeNode{
int val;
TreeNode left;
TreeNode right;
public TreeNode(int x){
val=x;
}
}
public class Solution{
public boolean isSubtree(TreeNode s,TreeNode t){
if(s==null||t==null)
return false;
return checkTree(s,t)||isSubtree(s.left,t)||isSubtree(s.right,t);//找到与t根节点相同的节点,然后开始进行判断
}
public boolean checkTree(TreeNode s,TreeNode t){
if(s==null&&t==null) //同时为null证明结构一样
return true;
if(s==null||t==null) //如果任意一个不为空,代表结构不一样
return false;
return (s.val==t.val)&&checkTree(s.left,t.left)&&checkTree(s.right,t.right);//这是判断结构是否相同的条件,对应节点值相同,并且左右子树对应的结构也要相同。
}
}
以上是关于15.Subtree of Another Tree(判断一棵树是否为另一颗树的子树)的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 572. Subtree of Another Tree