/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/**
* @param T1, T2: The roots of binary tree.
* @return: True if T2 is a subtree of T1, or false.
*/
public boolean isSubtree(TreeNode t1, TreeNode t2) {
// 2016-04-08
if (t2 == null) {
return true;
}
if (t1 == null) {
return false;
}
if (isSameTree(t1, t2)) {
return true;
}
return isSubtree(t1.left, t2) || isSubtree(t1.right, t2);
}
/**
* 判断两棵树是否完全一样(结构一样,值一样)
*/
private boolean isSameTree(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) {
return true;
}
if (t1 == null || t2 == null) {
return false;
}
if (t1.val != t2.val) {
return false;
}
return isSameTree(t1.left, t2.left) && isSameTree(t1.right, t2.right);
}
}
[剑指offer][第三章][18]Subtree
最新推荐文章于 2025-01-03 15:36:00 发布