17____树的子结构
题目描述:
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ //判断 root1是否包含 root2 public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean flag=false; if(root1==null ||root2==null){ return flag; } //当两个的根结点相同时 if(root1.val==root2.val){ flag=doMethod(root1,root2); } if(!flag){ //根结点比较失败,比较左孩子 flag=HasSubtree(root1.left,root2); } if(!flag){ //根结点比较失败,比较右孩子 flag=HasSubtree(root1.right,root2); } return flag; } public boolean doMethod(TreeNode root1,TreeNode root2){ if(root1==null&&root2!=null){ //递归结束的条件 比较失败 return false; } if(root2==null){ //递归结束的条件 比较成功 return true; } if(root1.val!=root2.val){ //两者的结点值不相等 return false; } //递归调用 return doMethod(root1.left,root2.left)&&doMethod(root1.right,root2.right); } }

浙公网安备 33010602011771号