树的子结构

树的子结构

https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13

  1. 先写一个方法,传入两棵根节点值相同的树,判断tree1是否和tree2结构一样
  2. 再写一个方法来遍历大树,找到一个和小树根节点值相等的节点,以该节点和小树根节点的值为参数调用上面的方法即可
public class Solution {
    // 递归地在大树上寻找和小树的根节点相同的节点
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        if (root1 == null || root2 == null) 
            return false;
        return HasSubtreeHelper(root1, root2)
            || HasSubtree(root1.left, root2)
            || HasSubtree(root1.right, root2);
        }

    // 如果找到一个根节点和小树的根节点相同,递归判断大树是否包含小树
    public boolean HasSubtreeHelper(TreeNode r1, TreeNode r2) {
        if(r2 == null) 
            return true;
        if(r1 == null) 
            return false;
        if(r1.val != r2.val) 
            return false;
        return HasSubtreeHelper(r1.left, r2.left) 
            && HasSubtreeHelper(r1.right, r2.right);
    }
}
全部评论

相关推荐

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