先序遍历

数据结构(树与二叉树)

做~自己de王妃 提交于 2019-11-26 12:29:34
一、定义 树是n(n≥0)个结点的有限集合,n=0时,称为空树。(它是一种一对多的逻辑结构) 而对任意非空树应该满足: 1)有且仅有一个特定的称为根的结点。 2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集合,其中每一个集合本身又是一棵树,称为根结点的子树。 (其中A为根节点。BEF为根节点A的其中一个子树。) 观察可知树有以下两个特点: 1。树的根节点没有前驱结点,除根节点外的所有结点有且只有一个前驱结点。 2。树中所有结点可以有零个或多个后继结点 (重要结论:n个结点的树中只有n-1条边。) 二、基本术语 1)祖先结点和子孙结点 、双亲结点和孩子结点、兄弟结点 由根节点出发为了找到K,所经过的路径为: ABEK因此E、B、A均为K的祖先结点,而K为A、B、E的子孙结点 。看这样一个子树EKL,在这个子树中 K、L为E的孩子结点,而E为K、L的双亲结点,且K与L互为兄弟结点。 2)度 树中一个结点的子节点的个数称为该结点的度(如A、D的度为3,B、E的度为2,C的度为1,而F、G、H、I、J、K、L的度为0),而树中的最大度数称为树的度(容易看出该树的度为3) 3)分支结点与叶子结点 度大于0的结点称为分支结点,而度为0的结点称为叶子结点。(如A、B、C、D、E均为分支结点而F、G、H、I、J、K、L均为叶子结点。) 4)结点的层次、高度、深度 结点的层次

Python -二叉树 创建与遍历算法(很详细)

ぐ巨炮叔叔 提交于 2019-11-26 12:17:42
树表示由边连接的节点。它是一个非线性的数据结构。它具有以下特性。 一个节点被标记为根节点。 除根节点之外的每个节点都与一个父节点关联。 每个节点可以有一个arbiatry编号的chid节点。 我们使用前面讨论的os节点概念在python中创建了一个树数据结构。我们将一个节点指定为根节点,然后将更多的节点添加为子节点。下面是创建根节点的程序。 创建树 创建根 我们只需要创建一个节点类并向节点添加赋值。这就变成了只有根节点的树。 1 class Node: 2 3 def __init__(self, data): 4 self.left = None #左节点 5 self.right = None #右节点 6 self.data = data #值 7 8 def PrintTree(self): 9 print(self.data) 10 11 root = Node(10) #创建节点 12 13 root.PrintTree() 当执行上述代码时,将产生以下结果- 10 插入到树中 要插入到树中,我们使用上面创建的相同节点类,并向其添加一个插入类。insert类将节点的值与父节点的值进行比较,并决定将其添加为左节点或右节点。最后,PrintTree类用于打印树。 1 class Node: 2 def __init__(self, data): 3 self.left =

20182301 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结

纵饮孤独 提交于 2019-11-25 23:45:44
20182301 2019-2020-1 《数据结构与面向对象程序设计》第十周学习总结 教材学习内容总结 图的结构构成 顶点(vertex):图中的数据元素,如图一 边(edge):图中连接这些顶点的线,如图一 G=(V,E) 或者 G=(V(G),E(G)) 其中 V(G)表示图结构所有顶点的集合,顶点可以用不同的数字或者字母来表示。E(G)是图结构中所有边的集合,每条边由所连接的两个顶点来表示。 图结构中顶点集合V(G)不能为空,必须包含一个顶点,而图结构边集合可以为空,表示没有边。 图的基本概念 无向图 如果一个图结构中,所有的边都没有方向性,那么这种图便称为无向图。典型的无向图,如图二所示。由于无向图中的边没有方向性,这样我们在表示边的时候对两个顶点的顺序没有要求。例如顶点VI和顶点V5之间的边,可以表示为(V2, V6),也可以表示为(V6,V2)。 有向图 一个图结构中,边是有方向性的,那么这种图就称为有向图,如图三所示。由于图的边有方向性,我们在表示边的时候对两个顶点的顺序就有要求。我们采用尖括号表示有向边,例如<V2,V6>表示从顶点V2到顶点V6,而<V6,V2>表示顶点V6到顶点V2。 顶点的度 连接顶点的边的数量称为该顶点的度。顶点的度在有向图和无向图中具有不同的表示。对于无向图,一个顶点V的度比较简单,其是连接该顶点的边的数量,记为D(V)。

数据结构(十四)——二叉树

久未见 提交于 2019-11-25 20:25:28
数据结构(十四)——二叉树 一、二叉树简介 1、二叉树简介 二叉树是由n(n>=0)个结点组成的有序集合,集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。 二叉树的五种形态: 2、二叉树的存储结构模型 树的另一种表示法:孩子兄弟表示法 A、每个结点都有一个指向其第一个孩子的指针 B、每个结点都有一个指向其第一个右兄弟的指针 孩子兄弟表示法的特性: A、能够表示任意的树形结构 B、每个结点包含一个数据成员和两个指针成员 C、孩子结点指针和兄弟结点指针构成树杈 3、满二叉树 如果二叉树中所有分支结点的度数都为2,并且叶子结点都在统一层次上,则二叉树为满二叉树。 4、完全二叉树 如果一棵具有n个结点的高度为k的二叉树,树的每个结点都与高度为k的满二叉树中编号为1——n的结点一一对应,则二叉树为完全二叉树。 完全二叉树的特性: A、同样结点数的二叉树,完全二叉树的高度最小 B、完全二叉树的叶子结点仅出现在最下边两层,并且最底层的叶子结点一定出现在左边,倒数第二层的叶子结点一定出现在右边。 C、完全二叉树中度为1的结点只有左孩子。 5、二叉树的特性 A、在二叉树的第i层上最多有2^(i-1)个结点(i>=1)。 B、高度为k的二叉树,最多有2^k-1个结点(k>=0)。 C、对任何一棵二叉树,如果其叶结点有n个,度为2的非叶子结点有m个,则 n = m