题解 | #树的子结构#双重递归

树的子结构

http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88

    public boolean HasSubtree(TreeNode root1,TreeNode root2) {

        if (root1 == null || root2 == null){
            return false;
        }

        return preTrace(root1,root2) || HasSubtree(root1.left,root2) ||  HasSubtree(root1.right,root2);
    }

    private boolean preTrace(TreeNode root1,TreeNode root2){

        if (root2 == null){
            return true;
        }

        if (root1 == null){
            return false;
        }

        if (root1.val != root2.val){
            return false;
        }

        if (root2.left == null && root2.right == null){
            return true;
        }

        return preTrace(root1.left,root2.left) && preTrace(root1.right,root2.right);
    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务