程序员-3期(PX014)树和图树和图.pptxVIP

  • 2
  • 0
  • 约1.81千字
  • 约 10页
  • 2021-04-16 发布于北京
  • 举报
程序员教程;8.3.1树 树结构是一种非常重要的非线性结构,该结构中一个数据元素可以有两个或两个以上的直接后继元素,可以用来描述客观世界中广泛存在的层次关系。 1.树的定义 树是以n(n≥0)个节点的有限集合。当n=0时称为空树。在任一非空树(n0)中,有且仅有一个称为根的节点;其余节点可分为m(m≥0)个互不相交的有限集T1,T2,…,Tm,其中每个集合又都是一棵树,并且称为根节点的子树。 树的定义是递归的,它表明了树本身的固有特性,也就是一棵树由若干棵子树构成,而子树又由更小的子树构成。;双亲、孩子和兄弟:节点的子树的根称为该节点的孩子,相应地,该节点称为其子节点的双亲。具有相同双亲的节点互为兄弟。 节点的度:一个节点的子树的个数记为该节点的度。 叶子节点;也称为终端节点,指度为零的节底。 内部节点:度不为零的节点称为分支节点或非终端节点。除根节点之外,分支节点也称为内部节点。 · 节点的层次:根为第一层,根的孩子为第二层。依此类推,若某节点在第i层,则其孩子节点就在第持i+1层。 · 树的高度:一棵树的最大层次数记为树的高度(或深度)。 · 有序(无序)树:若将树中节点的各子树看成是从左到右具有次序的,即不能交换,则称该树为有序树,否则称为无序树。 · 森林:是m(m≥0)棵 互不相交的树的集合。 ;2.二叉树的定义及基本运算 1)二叉树的定义 二叉树是n(n≥0)个节点的有限集合,它或者是空树(n=O),或者是由一个根节点及两棵不相交的、分别称为左右子树的二叉树所组成。 ;2)二叉树的性质 (1)二叉树第i层(i≥1)上至多有2i-l个节点。 (2)深度为k的二叉树至多有2k-l个节点(k≥l)。 由性质l,每一层的节点数都取最大值即得 (3)对任何一棵二叉树,若其终端节点数为n0,度为2的节点数为n2,则nO=n2+1。 (4)具有一个节点的完全二叉树的深度为[log2n]+l。 (5)对一棵有n个节点的完全二叉树的节点按层次自左至右进行编号,则对任一节点i(1≤i≤n)有: · 若i=l,则节点i是二叉树的根,无双亲:若il,则其双亲为[i/2]。 · 若2in,则节点i无左孩子,否则其左孩子为2i。 · 若2i+ln,则节点i无右孩子,否则其右孩子为2i+l。 ;若深度为k的二叉树有2k-l个节点,则称其为满二叉树。可以对满二叉树中的节点进行连续编号,约定编号从根节点起,自上而下、自左至右依次进行。深度为k、有n个节点的二叉树,当且仅当其每一个节点都与深度为k的满二叉树中编号为1~n的节点一一对应时,称之为完全二叉树。 完全二叉树通俗定义:若一棵二叉树至多只有最下面两层上结点的度数小于2,并且最下一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。 ;4.二叉树的存储结构 1)二叉树的顺序存储结构 在最坏的情况下,一个深度为k且只有k个节点的二叉树(单枝树)却需要2k-l个存储单元。 2)二叉树的链式存储结构 ;5.二叉树的遍历 1)中序遍历二叉树的操作定义为。若二叉树为空,则进行空操作。否则: (1)中序遍历根的左子树。 (2)访问根节点。 (3)中序遍历根的右子树。 2)先序遍历 3)后序遍历 遍历二叉树的基本操作就是访问节点,不论按照哪种次序遍历,对含有n个节点的二叉树,遍历算法的时间复杂度都为O(n)、空间复杂度也为O(n) 。 6.最优二叉树 最优二叉树是指权值为wl,W2,…,Wn的n个叶子节点的二叉树中带权路径长度最小的二叉树。 ;7.二叉查找树 二叉查找树又称为二叉排序树,它或者是一棵空树,或者是具有如下性质的二叉树。 (1)若它的左子树非空,则左子树上所有节点的值均小于根节点的值。 (2)若它的右子树非室,则右子树上所有节点的值均大于根节点的值。 (3)左、右子树本身就是两棵二叉查找树。 ;8.3.2图 有向图:若图中每条边都是有方向的。 无向图:若图中的每条边都是无方向的。 完全图:若一个无向图具有n个顶点,而每一个顶点与其他n-l个顶点之间都有边,则称之为无向完全图。 2.图的存储结构 1)邻接矩阵表示法 2)邻接链表表示法

文档评论(0)

1亿VIP精品文档

相关文档