题解 | #树的子结构#

树的子结构

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

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    private static boolean IsSame(TreeNode begin,TreeNode beginSub) {
        if(beginSub == null) {
            return true;
        }
        if(begin == null) {
            return false;
        }
        if(begin.val != beginSub.val) {
            return false;
        }
        return IsSame(begin.left,beginSub.left) && IsSame(begin.right,beginSub.right);
    }

    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        if(root1 == null || root2 == null) {
            return false;
        }
        boolean ans = false;
        if(root1.val == root2.val) {//当val值相等,有机会是子结构,此时需要判定左右子树是否相等
            ans = IsSame(root1,root2);
        }

        if(!ans) {//说明上面判定失败,再看root1的左子树中有没有root2
            ans = HasSubtree(root1.left,root2);
        }
        if(!ans) {//说明上面判定失败,再看root1的右子树中有没有root2
            ans = HasSubtree(root1.right,root2);
        } 
        return ans;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:30
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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