题解 | #重建二叉树#
重建二叉树
http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
python dfs解法
dfs ,先找到中序里面前序遍历第一个值的位置idx,
则左节点的pre=pre[1:dix+1], vin=vin[:idx],
右节点pre=[idx+1:],vin=vin[idx+1:]
class Solution:
def reConstructBinaryTree(self , pre: List[int], vin: List[int]) -> TreeNode:
# write code here
def dfs(p, v):
if not p:
return None
node = TreeNode(p[0])
idx = v.index(p[0])
node.left = dfs(p[1:idx+1], v[:idx])
node.right = dfs(p[idx+1:], v[idx+1:])
return node
return dfs(pre, vin)