博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
阅读量:7227 次
发布时间:2019-06-29

本文共 1349 字,大约阅读时间需要 4 分钟。

题目如下:

解题思路:根据先序和中序遍历的结果构造二叉树,这也是二叉树系列题目中的经典题型了。这种题目用递归比较简单,先序遍历是先遍历根节点,如题目用例中的3根节点,而中序遍历根节点在中间,所以以3作为分割点把中序的结果分割成[9]和[15,20,7],这两半部分分别对应根节点的左右子树,接下来再对左右子树分别做同样的递归即可,这里需要注意的是先递归左子树,再是右子树,因为先序遍历就是先左后右的,相同的顺序可以保证先序结果中preorder.pop(0)出来的节点都是即将要递归的子树的根节点。

代码如下:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def traverse(self,parent,preorder,inorder,director):        if len(preorder) == 0 or len(inorder) == 0:            return        node = TreeNode(preorder.pop(0))        if director == 'L':            parent.left = node        else:            parent.right = node        inx = inorder.index(node.val)        self.traverse(node, preorder, inorder[0:inx], 'L')        self.traverse(node, preorder, inorder[inx + 1:], 'R')    def buildTree(self, preorder, inorder):        """        :type preorder: List[int]        :type inorder: List[int]        :rtype: TreeNode        """        if len(preorder) == 0 or len(inorder) == 0:            return None        root = TreeNode(preorder.pop(0))        inx = inorder.index(root.val)        self.traverse(root,preorder,inorder[0:inx],'L')        self.traverse(root,preorder,inorder[inx+1:],'R')        return root

 

转载于:https://www.cnblogs.com/seyjs/p/9660637.html

你可能感兴趣的文章
【00】Effective Java
查看>>
.NET重构—单元测试重构
查看>>
SMB简介sabma服务(一)
查看>>
ANT简明教程
查看>>
Eclipse Luna WTP 与 Tomcat 8 的整合存在一个很头疼的 Bug
查看>>
小数在计算机里面的存放
查看>>
数据结构中的各种树简单解释
查看>>
我的朗科运维第七课
查看>>
CentOS的进程管理二
查看>>
https客户端证书导入
查看>>
用 PreparedStatement 向 SqlServer 中一次性插入多条记录
查看>>
Slackware-2014-0903
查看>>
CentOS下安装JDK1.7
查看>>
LDAP DIT设计参考
查看>>
iptables详解
查看>>
Protostuff 介绍
查看>>
一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别...
查看>>
参数验证其实可以更简明一点
查看>>
Set up Mule runtime env with mule-standalone-3.6.0
查看>>
Linux基础-linux命令:csplit
查看>>