在讨论二叉树之前,我们需要知道,什么是树(结构)?
树结构是一类重要的非线性数据结构。直观来看,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树来形象表示。树在计算机领域中也得到广泛应用,如在操作系统中,用树来表示文件目录的组织结构,在编译系统中,用树来表示源程序的语法结构,在数据库系统中,树结构也是信息的重要组织形式之一。
树
树(Tree)是 n(n≥0)个节点的有限集合,它或为空树(n=0);或为非空树,对于非空树 T:
- 有且仅有一个称之为根的节点;
- 除根节点以外的其余节点可分为 m(m>0)个互不相交的有限集,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。
树结构的定义是一个递归的定义,即在树的定义中又用到树的定义,这是树的固有特性。
基本术语
- 节点:树中的一个独立单元。
- 节点的度:节点拥有的子树的个数称为节点的度。
- 树的度:树的度是树内各节点度的最大值。
- 叶子:度为 0 的节点称为叶子或终端节点。
- 非终端节点:度不为 0 的节点称为非终端节点或分支节点。除了根节点之外,非终端节点也称为内部节点。
- 双亲和孩子:节点的子树的根称为该节点的孩子,相应地,该节点称为孩子的双亲。
- 兄弟:同一个双亲的孩子之间互称兄弟。
- 祖先:从根到该节点所经分支上的所有节点。
- 子孙:以某节点为根的子树中的任一节点都称为该节点的子孙。
- 层次:节点的层次从根开始定义起,根为第一层,根的孩子为第二层。树中任一节点的层次等于其双亲节点的层次加一。
- 堂兄弟:双亲在同一层的节点互为堂兄弟。
- 树的深度:树中节点的最大层次称为树的深度或高度。
- 有序树和无序树:如果将树中节点的各个子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。
- 森林:是 m(m≥0)棵互不相交的树的集合。对树中每个节点而言,其子树的集合即为森林。由此,也可以用森林和树相互递归的定义来描述树。
二叉树
二叉树(Binary Tree)是 n(n≥0)个节点所构成的集合,它或为空树(n=0);或为非空树,对于非空树 T:
- 有且仅有一个称之为根的节点;
- 除根节点以外的其余节点分为两个互相不相交的子集 T1 和 T2,分别称为 T 的左子树和右子树,且 T1 和 T2 本身又都是二叉树。
维基百科对于二叉树的定义:在计算机科学中,二元树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2 的节点)的树结构。通常分支被称作"左子树"或"右子树"。二元树的分支具有左右次序,不能随意颠倒。
从定义中可以看出,二叉树与树一样具有递归性质,也可以说,二叉树是树的一个子集,二叉树与树的区别主要有以下两点:
- 二叉树的每个节点至多只有两颗子树(即二叉树中不存在度大于 2 的节点);
- 二叉树的子树有左右之分,其次序不能任意颠倒。
二叉树是计算机科学中最为常用的树形数据结构。
网友评论