剑指offer-树的子结构
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
使用递归
1 public class Solution {//树 my 2 public boolean HasSubtree(TreeNode root1,TreeNode root2) { 3 if(root1==null||root2==null){ 4 return false; 5 } 6 boolean re = false; 7 if(root1.val==root2.val){ 8 re=judgeTree(root1,root2); 9 } 10 if(!re) re = HasSubtree(root1.left,root2); 11 if(!re) re = HasSubtree(root1.right,root2); 12 return re; 13 } 14 15 public boolean judgeTree(TreeNode root1,TreeNode root2){ 16 if(root2==null){//子结构不一定是子树 17 return true; 18 } 19 if(root1==null){ 20 return false; 21 } 22 if(root1.val!= root2.val){ 23 return false; 24 } 25 return judgeTree(root1.left,root2.left)&&judgeTree(root1.right,root2.right); 26 } 27 }