public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root2==null){ return false; } if(root1==null){ return false; } return isSubtree(root1,root2)||isSubtree(root1.left,root2)||isSubtree(root1.right,root2); } public static boolean isSubtree(TreeNode root1,TreeNode root2){ if(root2==null)//关键,顺序不能返 return true; if(root1==null){ return false; } if(root1.val==root2.val){//这里一定不要直接比较他们两个地址是否相同。 return isSubtree(root1.left,root2.left)&&isSubtree(root1.right,root2.right); } return false; } }
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
原文:https://www.cnblogs.com/littleswan/p/11462486.html