原题
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.
代码实现
public class Solution {
public bool IsSubtree(TreeNode s, TreeNode t) {
if(s==null) return false;
if(isSame(s,t)) return true;
//s.left-tree和t-tree是不是相等树?
//s.right-tree和t-tree是不是相等树?
return IsSubtree(s.left,t) || IsSubtree(s.right,t);
}
//判断s-tree和t-tree是不是相等树
private bool isSame(TreeNode s, TreeNode t){
if (s == null && t == null) return true;
if (s == null || t == null) return false;
return s.val == t.val &&
isSame(s.left, t.left) &&
isSame(s.right, t.right);
}
}
leetcode-solution库
leetcode算法题目解决方案每天更新在github库中,欢迎感兴趣的朋友加入进来,也欢迎star,或pull request。https://github.com/jackzhenguo/leetcode-csharp