题目描述
输入两颗二叉树A,B,判断B是不是A的子结构。
采用两个递归来实现,第一个递归是遍历树A,找到A中与B的根节点相等的节点,第二个递归是用来比较从找到
的节点开始与B树每个节点进行比较,如果都相同则是子树,如果不相同,则继续进行寻找,如果没找到,则不
不是A的子树。
public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean result=false; if(root1!=null&&root2!=null){ if(root1.val==root2.val){ result=doesHasSubtree(root1,root2); } if(!result){ result=HasSubtree(root1.left,root2); } if(!result){ result=HasSubtree(root1.right,root2); } } return result; } private boolean doesHasSubtree(TreeNode root1,TreeNode root2){ if(root2==null) return true; if(root1==null) return false; if(root1.val!=root2.val) return false; return doesHasSubtree(root1.left,root2.left)&&doesHasSubtree(root1.right,root2.right); } }