18_树的子结构

来源:互联网 发布:陆行鲨机甲风暴java 编辑:程序博客网 时间:2024/06/07 20:48

输入两棵二叉树A,B,判断B是不是A的子结构

    // 第一步判断:查找树A中跟树B根节点的值一样的节点    // root1:A树               root2:B树    public boolean HasSubtree(BinaryTree root1,BinaryTree root2) {        if(root2==null) return false;        if(root1==null && root2!=null) return false;              boolean flag = false;        if(root1.val==root2.val){            flag = isSubTree(root1,root2);        }        if(!flag){            flag = HasSubtree(root1.left, root2);            if(!flag){                flag = HasSubtree(root1.right, root2);            }        }        return flag;    }    // 第二步判断:判断节点的结构是否相同,左节点右节点之类的    // root1:A树               root2:B树    public boolean isSubTree(BinaryTree root1, BinaryTree 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);        }else{            return false;        }    }
原创粉丝点击