您的位置:首页 > 其它

Construct Binary Tree from Preorder and Inorder Traversal 解题报告

2017-04-26 10:47 483 查看

Construct Binary Tree from Preorder and Inorder Traversal

Description

Construct Binary Tree from Preorder and Inorder Traversal

Notice

You may assume that duplicates do not exist in the tree.

Example

Given in-order [1,2,3] and pre-order [2,1,3], return a tree:

2
/ \
1   3


实现思路

像这类树问题,往往通过递归可以很简洁的解决。

可以先通过先序数组首位确定父节点A,然后在中序数组找到A,以此为中心,将数组切分成两半,进而将问题分成了构建左子树和右子树两个树问题,再重复操作即可。

下面给出了Python版本的简洁实现

"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""

class Solution:
"""
@param preorder : A list of integers that preorder traversal of a tree
@param inorder : A list of integers that inorder traversal of a tree
@return : Root of a tree
"""
def buildTree(self, preorder, inorder):
if not preorder:
return None
root = TreeNode(preorder[0])
mid = 0
while preorder[0] != inorder[mid]:
mid += 1
root.left = self.buildTree(preorder[1:mid+1],inorder[0:mid])
root.right = self.buildTree(preorder[mid+1:],inorder[mid+1:])
return root
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐