''' python中的树,树是非线性的数据结构(因为每个节点不止有一个后继) 计算机操作系统中的目录就是典型的树。(根节点认为是根目录,子节点是当前根目录下的所有子目录) 树结构的特点: 每个节点有且仅有一个父节点(除了根节点没有父节点之外),除了根节点之外,父节点具有唯一性 对于二叉树而言,每个节点会包含两个子节点(除了叶子节点没有子节点之外) 普通的树中的节点可以包含多于两个的孩子节点 二叉树是有序的树,每个节点必须区分左孩子和右孩子 二叉树的三种遍历方式,每种遍历方式都会访问到树中的每个节点 (1)先序遍历:根节点,左子树,右子树 (2)中序遍历:左子树,根节点,右子树 (3)后序遍历:左子树,右子树,根节点 假设有一棵二叉树: a /\ b c /\ / d e f 前序遍历:a b d e c f 中序遍历:d b e a f c 后序遍历:d e b f c a ''' ''' 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如输入前序遍历序列{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 not pre or not tin: return None val=pre.pop(0) root=TreeNode(val) index=tin.index(val) root.left=self.reConstructBinaryTree(pre,tin[:index]) root.right=self.reConstructBinaryTree(pre,tin[(index+1):]) return root
重建二叉树
最新推荐文章于 2025-03-31 21:54:50 发布