您的位置:首页 > 编程语言 > Python开发

[LeetCode]题解(python):106-Construct Binary Tree from Inorder and Postorder Traversal

2016-03-09 15:02 561 查看
[b]题目来源:[/b]

  https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/

[b]题意分析:[/b]

  给出一颗二叉树的中序遍历和后续遍历,还原这个树。

[b]题目思路:[/b]

  这题和上一题类似,用递归的思想,先根据后序遍历的最后一个确定根节点,然后将中序遍历分成两部分,接着递归就可以了。

[b]代码(python):[/b]

  

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
def buildTree(self, inorder, postorder):
"""
:type inorder: List[int]
:type postorder: List[int]
:rtype: TreeNode
"""
def dfs(ibegin,iend,pbegin,pend):
if pbegin >= pend:
return None
if pbegin == pend - 1:
return TreeNode(postorder[pend - 1])
i = inorder.index(postorder[pend - 1]) - ibegin
ans = TreeNode(postorder[pend - 1])
ans.left = dfs(ibegin,ibegin+i,pbegin,pbegin + i)
ans.right = dfs(ibegin + 1 + i,iend,pbegin + i,pend - 1)
return ans
return dfs(0,len(inorder),0,len(postorder))


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: