在此之前学习的数据结构都属于线性结构,线性结构的特点是逻辑结构简单,易于进行查找,插入和删除的操作,其主要用于对客观世界中具有单一的前驱和后继的数据关系进行描述,而现实生活中的许多事物的关系并非这样简单,如人类社会的族谱,各种社会组织机构以及城市交通、通讯等,采用非线性结构进行描绘会更明确和便利。
所谓非线性结构是指,在该结构中至少存在一个数据元素,有两个或两个以上的直接前驱(或直接后继元素)树形结构和图形结构就是其中十分重要的非线性结构,可以用来描述客观世界中广泛存在的层次结构和网状结构的关系,如前面提到的族谱、城市交通等。在树的应用中最常见的就是二叉树。下面结合理解浅谈一下二叉树的相关知识。
1、二叉树的定义与性质
1、二叉树的基本概念
1.1二叉树
1.2二叉树的相关概念
这里的相关概念会在以后编程亦或是考试都经常用到的,希望加强记忆!
1)、结点的度:节点所拥有的字数的个数称为该结点的度。
2)、叶结点:度为零的结点称为叶节点,在图中表示为最底层的结点。
3)、分支结点:度不为零的结点称为分支结点,或者称为非终端结点。一棵树的结点除了叶子结点外,其余的都是分支结点。
4)、左孩子、右孩子、双亲、兄弟、树的一个结点的子树的根结点成为这个结点的孩子。在二叉树中,左子树的根称为左孩子,右子树的根称为右孩子。这个结点称为它孩子的双亲。具有同一个双亲的孩子结点互称为兄弟。
5)路径、路径长度:如果一棵树的一串结点N1,N2,N3,...Nk有如下关系:结点ni是ni+1的父结点,就n1,n2...nk称为一条由n1至nk的路径。这条路径的长度就是k-1。 6)结点的层数:规定树的跟结点的层数为1,其余结点的层数等于它的双亲结点的层数加一。
7)输的深度:树中所有结点的最大层数称为树的深度。
8) 树的度:树中各结点的最大值称为该树的度。
9)满二叉树:在一棵二叉树中,如果所有的分支结点都存在于左子树和右子树,并且所有的叶子结点都在同一层上,这样的一颗二叉树称作满二叉树。
10)完全二叉树:一颗深度为k的有n个几点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1<=i<=n)的结点与满二叉树中编号为i的结点位置相同,则这棵二叉树称为完全二叉树。
特点:叶子结点只能出现在最下层和次最下层,且最下层的叶子结点集中在树的左部。