题目
Given a binary tree where each path going from the root to any leaf form a valid sequence, check if a given string is a valid sequence in such binary tree.
We get the given string from the concatenation of an array of integers arr and the concatenation of all values of the nodes along a path results in a sequence in the given binary tree.
解题思路
DFS, 递归的时候需要记录当前递归到的节点,以及对应数组中的位置,如果当前节点的数值和对应数组的数值不同返回False
如果已经到了数组中的最后一个数,就判断当前节点是否为页节点, 其他情况继续递归节点的左右子树以及对应数组中的下个数
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isValidSequence(self, root: TreeNode, arr: List[int]) -> bool:
def dfs(root, pos):
if not root or root.val != arr[pos]:
return False
if pos == len(arr) - 1:
return not root.left and not root.right
return dfs(root.left, pos + 1) or dfs(root.right, pos + 1)
return dfs(root, 0)