摘要:题目描述以为中心进行分类题目分析根据中序和后序遍历,构造二叉树。根据动态规划方法,找出循环的共性。构造子二叉树,需要节点,和左右连接,从后序遍历找出根节点,从对目标序列进行切分,如此往复。
题目描述:
Given inorder and postorder traversal of a tree, construct the binary tree.Note:
You may assume that duplicates do not exist in the tree.For example, given
inorder = [9,3,15,20,7]postorder = [9,15,7,20,3] Return the following binary tree: 3 / 9 20 / 15 7 inorder = [6,8,4,9,3,15,20,7] postorder = [6,4,8,9,15,7,20,3] 3 / 9 20 / / 8 15 7 / 6 4 ps: 以 postorder为中心进行分类
题目分析:根据中序和后序遍历,构造二叉树。 根据动态规划方法,找出循环的共性。
构造子二叉树,需要节点,和左右连接,从后序遍历找出根节点,从inorder对目标序列进行切分,如此往复。
# Definition for a binary tree node. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None class Solution: def buildTree(self, inorder, postorder): """ :type inorder: List[int] :type postorder: List[int] :rtype: TreeNode """ if not postorder: return None node_center_frompost=postorder.pop() index_center_inorder=inorder.index(node_center_frompost) node=TreeNode(node_center_frompost) node.left=self.buildTree(inorder[:index_center_inorder],postorder[:index_center_inorder]) node.right=self.buildTree(inorder[index_center_inorder+1:],postorder[index_center_inorder:]) return node
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/41468.html
前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 一、二叉树就是这么简单 本文撇开一些非常苦涩、难以理解的概念来讲讲二叉树,仅入门观看(或复习).... 首先,我们来讲讲什么是树: 树是一种非线性的数据结构,相对于线性的数据结构(链表、数组)而言,树的平均运行时间更短(往往与树相关的排序时间复杂度都...
摘要:因此,根据题目给出的先序遍历和中序遍历,可以画出二叉树选参考数据结构与算法描述实现二叉树算法浅谈数据结构二叉树慕课网实现二叉树算法前端树控件腾讯软件开发面试题 内容衔接上一章 数据结构与算法:常见排序算法 内容提要 什么是树 - 为什么使用树 二叉树 二叉查找树 红黑树 B、B+树 堆 伸展树 树 可以点击链接感受下笔者用d3.js画的tree https://codepen...
摘要:代码实现构建二叉树节点对应的值就是后序遍历数组的最后一个元素在中序遍历数组中的索引左子树的节点个数递归构造左右子树 把题目的要求细化,搞清楚根节点应该做什么,然...
阅读 3620·2021-11-24 09:39
阅读 2549·2021-11-15 11:37
阅读 2214·2021-11-11 16:55
阅读 5164·2021-10-14 09:43
阅读 3706·2021-10-08 10:05
阅读 3008·2021-09-13 10:26
阅读 2330·2021-09-08 09:35
阅读 3538·2019-08-30 15:55