一.树的递归定义
树(tree)是n(n>0)个结点的有限集,满足:
(1)有且仅有一个特定的称为根(root)的结点;
(2)其余的结点可分为m(m≥0)个互不相交的有限集,其中每个集合本身又是一棵树,并称其为根的子树(subtree)。
•树是一种递归的数据结构
•树的递归定义既道出了树的固有特性又为树的递归处理带来很大的方便。
二.树的表示方法
1.树形表示法
2.文氏图表示法
3.凹入表示法
4.广义表(嵌套括号)表示法。
• 树的表示方法的多样化,说明了树结构在日常生活中及计算机程序设计中的重要性。一般说来,分等级的分类方案都可用层次结构来表示,即可导致一个树结构。
三.树的基本术语
树的结点包含一个数据元素及若干指向其子树的分支。
1.结点的度(degree):结点拥有的子树数。
2.树的度:树中所有结点的度的最大值。
3.分支结点(非终端结点):度>0的结点。
4.叶子(leaf)(终端结点):度为0的结点。
5.孩子(child):结点子树的根称为该结点的孩子。
6.双亲(parent):
7.祖先:从根结点到该结点所经分支上的所有结点。
8.子孙:结点的所有子树中的结点。
9.兄弟(sibling): 同一双亲的孩子间互称兄弟。
10.结点的层次(level): 从根开始定义,根为第一层,…。
11.树的深度(depth): 树中结点的最大层次称为树的深度或高度。
12.无序树/有序树:如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。
13.森林(forest):m(m≥0)棵互不相交的树的集合。
二叉树
·二叉树(binary tree)
另一种重要的树型结构.
·二叉树的特点
每个结点至多有两棵子树;
二叉树的子树有左右之分;
二叉树的存储和处理比一般树简单.
·任何树都可以方便地转换为二叉树来存储和处理。
一.二叉树的定义和性质
(一)二叉树的递归定义
二叉树是结点的有限集,该集合或是空,或者是由一个根结点和两棵分别称为根结点的左子树和右子树的互不相交的二叉树组成。
二叉树并非特殊的树(无论有序或无序)。
二叉树的基本形态:
(二)二叉树的基本性质
性质1:在二叉树的第i (i≥1)层上至多有2 i-1个结点。
性质2:深度为k(k≥1)的二叉树至多有2k-1个结点。
性质3:对任何一棵二叉树T,必有n 0=n 2+1。
其中:n 0表示T中终端结点数;
n 2表示T中度为2的结点数。
二叉树的遍历
一、遍历概念
•遍历二叉树(Traversing Binary Tree)
按一定顺序,访问二叉树中每个结点,且每个结点仅被访问一次。
•
二叉树三个基本组成单位:根结点、左子树、右子树。
记 L:遍历左子树
D:访问根结点
R:遍历右子树
则有六种遍历次序:DLR,LDR,LRD,DRL,RDL,RLD
限定先左后右,则仅有前三种情况。