题目原址
https://leetcode.com/problems/subtree-of-another-tree/description/
题目描述
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.
Example2:
Given tree s:
3
/ \
4 5
/ \
1 2
/
0
Given tree t:
4
/ \
1 2
Return false
解题思路
给定两个二叉树,S和t,判断t是否是s的子树。
采用递归的思想,其中使用到了判断两个树是否相同的操作
AC代码
class Solution {
public boolean isSubtree(TreeNode s, TreeNode t) {
if(s == null || t == null)
return false;
//sameOrNot(s,t)判断根是否是子二叉树,
//isSubtree(s.left,t)判断根节点左孩子是否是子二叉树
//isSubtree(s.right,t)判断根节点右孩子是否是子二叉树
return sameOrNot(s,t) || isSubtree(s.left,t) || isSubtree(s.right, t);
}
//判断两棵树是否相同
public boolean sameOrNot(TreeNode s, TreeNode t) {
if(s == null && t == null) return true;
if(s == null || t == null) return false;
return s.val == t.val && sameOrNot(s.left,t.left) && sameOrNot(s.right,t.right);
}
}