重建二叉树
来源:互联网 发布:linux exec用法 编辑:程序博客网 时间:2024/06/03 18:14
牛客网 《剑指offer》
时间限制:1秒
空间限制:32768K
热度指数:220072
题目描述
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
解题思路
前序遍历的第一个结点为根节点
中序遍历的根结点的左边为左子树,右边为右子树
于是,递归
程序
python 2.7
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回构造的TreeNode根节点 def reConstructBinaryTree(self, pre, tin): # write code here if not pre or not tin: return None if 1 == len(pre): return TreeNode(pre[0]) root = TreeNode(pre[0]) index = tin.index(pre[0]) root.left = self.reConstructBinaryTree(pre[1:index + 1], tin[:index]) root.right = self.reConstructBinaryTree(pre[1 + index:], tin[index + 1:]) return root
结果
运行时间:57ms占用内存:5768k
阅读全文
0 0
- 3.9重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 二叉树的重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 重建二叉树
- 二叉树重建
- 二叉树重建
- 重建二叉树
- 重建二叉树
- 重建二叉树
- String和StringBuffer和StringBuilder之间区别
- cocos2dx-容器的使用
- 表,栈和队列
- docker--端口映射与容器互联
- 树
- 重建二叉树
- 四种常见排序
- android-studio+Genymotion模拟器
- Ubuntu 16.04 安装 MySQL
- Js实现鼠标滚轮滑动监听
- 213. House Robber II
- UITableView 基本使用方法 iOS的listview
- php正则去除文章页标签范例
- laravel Task Scheduling(任务调度)在windows下的使用