leetcode 572.另一个树的子树

168 阅读1分钟

572.另一个树的子树

给定两个非空二叉树 st,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 给定的树 s:

     3
    / \
   4   5
  / \
 1   2
    /
   0

给定的树 t:

   4
  / \
 1   2   返回 false
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:
        def convert(p):
            return "^" + str(p.val) + "#" \
                   + convert(p.left) + convert(p.right) if p else "$"
        return convert(t) in convert(s)
# 递归 + 序列化 + 子串查找