子树判断

来源:互联网 发布:麦淘网源码 编辑:程序博客网 时间:2024/05/29 16:49
   //遍历Tree1,查找与Tree2 root相同的节点  boolean  HasSubtree(TreeNode root1, TreeNode root2){        boolean result = false;        if(root1 != null && root2 != null){            if(root1.val == root2.val){                //查找到与Tree2 root相同的节点,接着判断二者是否具有相同结构                result = DoesTree1hasTree2(root1,root2);            }            if(result != true)                result = HasSubtree(root1.left, root2);            if(result != true)                result = HasSubtree(root1.right, root2);            }        return result;    }   boolean  DoesTree1hasTree2(TreeNode root1, TreeNode root2){        boolean lflag = false;        boolean rflag = false;        //Tree2结束        if(root2==null){            return true;        }        //Tree2有节点时候,Tree1还有,说明肯定不是包含关系        if(root1==null){            return false;        }        if(root1.val != root2.val){            return false;        }        else{            lflag = DoesTree1hasTree2(root1.left,root2.left);            rflag = DoesTree1hasTree2(root1.right,root2.right);            return lflag && rflag;        }    }

0 0
原创粉丝点击