
思路: 最简单的方法,依次遍历比较就可以了。
AC代码:
/**
* 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: The roots of binary tree T1.
* @param T2: The roots of binary tree T2.
* @return: True if T2 is a subtree of T1, or false.
*/
public boolean isSubtree(TreeNode t1, TreeNode t2) {
if(t2==null) return true;
else if(t1==null) return false;
else return isSame(t1, t2) || isSubtree(t1.left, t2) || isSubtree(t1.right, t2);
}
private boolean isSame(TreeNode t1, TreeNode t2){
if(t1==null || t2==null) return t1==t2;
else return t1.val==t2.val && isSame(t1.left, t2.left) && isSame(t1.right, t2.right);
}
}
题目来源: http://www.lintcode.com/zh-cn/problem/subtree/
.