题解 | #树的子结构#

树的子结构

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

思路: 两个函数,主函数,check函数

1、check,递归判断当前节点,左,右节点是否相同
  • 子树结构先为空,则说明子树全部判断完,返回True
  • 子树不为空,主树为空,则说明子树没判断完,主树无节点判断了,返回False
2、主函数,递归check树的当前节点,当前节点左,右子树的情况
class Solution:
    def HasSubtree(self , pRoot1: TreeNode, pRoot2: TreeNode) -> bool:
        if not pRoot1 or not pRoot2:
            return False
        
        return self.check(pRoot1, pRoot2) or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2)
        
    
    def check(self, p1, p2):
        if not p2:
            return True
        
        if not p1:
            return False
        
        return p1.val == p2.val and self.check(p1.left, p2.left) and self.check(p1.right, p2.right)
全部评论

相关推荐

04-17 23:48
西北大学 Java
陈好好wy:加油加油 字节和心脏谁先跳动
字节跳动开奖383人在聊
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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