/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public boolean HasSubtree(TreeNode root1, TreeNode root2) {
if (root1 == null || root2 == null) return false;
boolean flag1 = res(root1,root2);
boolean flag2 = HasSubtree(root1.left,root2);
boolean flag3 = HasSubtree(root1.right,root2);
return flag1 || flag2 || flag3;
}
public boolean res(TreeNode root1, TreeNode root2) {
if (root1 == null && root2 != null) return false;
if (root1 == null || root2 == null) return true;
if (root1.val != root2.val) return false;
return res(root1.left, root2.left) && res(root1.right, root2.right);
}
}
两个递归
1.HasSubtree遍历所有节点
2.res判断当前节点与子树是否一致



京公网安备 11010502036488号