剑指offer 06 重建二叉树
2017-08-03 18:20
267 查看
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:
根据前序第一个数,找到在中序的下标。下标左边是左子树,右边是右子树。递归遍历。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回构造的TreeNode根节点
def reConstructBinaryTree(self, pre, tin):
# write code here
if len(pre) == 0 or len(tin) == 0:
return None
tree = TreeNode(pre[0])
#寻找数字在中序中的位置
index = 0
for i in tin:
if i == pre[0]:
break
index += 1
if len(tin[:index]) == 0:
tree.left = None
else:
tree.left = self.reConstructBinaryTree(pre[1:1 + index], tin[:index])
if len(tin[index + 1:]) == 0:
tree.right = None
else:
tree.right = self.reConstructBinaryTree(pre[1 + index:], tin[index + 1:])
return tree
相关文章推荐
- 剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)
- 剑指offer编程题——06 重建二叉树
- 剑指offer面试题06:重建二叉树
- 剑指Offer_面试题06_重建二叉树
- 剑指offer-面试题06-重建二叉树
- 【剑指offer-Java版】06重建二叉树
- [剑指offer][面试题06]重建二叉树
- 剑指offer面试题6 重建二叉树(java)
- 剑指Offer——(4)重建二叉树
- 剑指offer--4.重建二叉树
- 剑指Offer_04_重建二叉树
- 【剑指offer】先序、中序遍历结果重建二叉树
- 剑指offer面试题6--重建二叉树
- 剑指offer 重建二叉树
- [牛客网,剑指offer,python] 重建二叉树
- 【面试题】剑指Offer-6-根据前序和中序遍历重建二叉树
- 剑指offer-4.重建二叉树
- 【剑指offer】重建二叉树
- 剑指offer:重建二叉树
- 剑指offer(4)—重建二叉树