题解 | 2023_树的子结构_1446.txt

2023_树的子结构_1446.txt

https://www.nowcoder.com/practice/0c9236ef3e9c4682866fd34214166836

from collections import deque
from sys import setrecursionlimit

setrecursionlimit(2000)


class TreeNode:
    def __init__(self, val='0', left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


def build_tree(nums):
    root = TreeNode(nums[0])
    queue = deque([root])
    i = 1
    while queue and i < len(nums):
        node = queue.popleft()
        if nums[i] != 'null':
            node.left = TreeNode(nums[i])
            queue.append(node.left)
        i += 1
        if i < len(nums) and nums[i] != 'null':
            node.right = TreeNode(nums[i])
            queue.append(node.right)
        i += 1
    return root


def is_match(node1, node2):
    if not node2: return True
    if not node1: return False
    return node1.val == node2.val and is_match(node1.left, node2.left) and is_match(node1.right,
                                                                                    node2.right)


def is_substructure(root1, root2):
    if not root1 or not root2: return False
    return is_match(root1, root2) or is_substructure(root1.left, root2) or is_substructure(root1.right, root2)


if __name__ == '__main__':
    nums1, nums2 = input().split(), input().split()
    root1, root2 = build_tree(nums1), build_tree(nums2)
    print('true' if is_substructure(root1, root2) else 'false')

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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