题解 | #树的子结构#

树的子结构

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

import java.util.*;
/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }

}
*/
public class Solution {
    private boolean recursion(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 != null)
            return false;
        //都为空或者root1不为空,root2为空
        if (root1 == null || root2 == null)
            return true;
        //都不为空
        return root1.val == root2.val && recursion(root1.left, root2.left) && recursion(root1.right, root2.right);
    }

    public boolean HasSubtree(TreeNode root1, TreeNode root2) {
        if (root2 == null )return false;
        if (root1 == null )return false;
        boolean flag1 = recursion(root1, root2);
        boolean flag2 = HasSubtree(root1.left, root2);
        boolean flag3 = HasSubtree(root1.right, root2);
        return flag1 || flag2 || flag3;
    }
}

看我的!讨厌官网这道题解!这题真的折腾了好久,一直在看官网的思路,他HasSubtree这个方法里面写了三个if条件,冗余了,总共就四种情况搞那么复杂真的是,判断过root2 == null为false后下面的肯定是root2 不为 null了,所以root1 == null的话肯定也false。

全部评论

相关推荐

点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务