深度优先搜索
class Solution {
public boolean isSubtree(TreeNode root, TreeNode subRoot) {
/**
* 对于树的每个节点,都判断一下是否和子树是一个树(《100. 相同的树》)
*/
if (subRoot == null){
return true;
}
if (root == null){
return false;
}
return isSubtree(root.left, subRoot) || isSubtree(root.right, subRoot) || isSameTree(root, subRoot);
}
public boolean isSameTree(TreeNode tree1, TreeNode tree2){
if (tree1 == null || tree2 == null){
return tree1 == tree2;
}
if (tree1.val == tree2.val) {
return isSameTree(tree1.left, tree2.left) && isSameTree(tree1.right, tree2.right);
}
else {
return false;
}
}
}
/**
* 时间复杂度 O(n)
* 空间复杂度 O(logn)
*/
https://leetcode-cn.com/problems/subtree-of-another-tree/