一、树的基本概念 1.树的定义 树(Tree)是n(n≥0)个结点的有限集,它或为空树(n=0);或为非空树,对于非空树(1)有且仅有一个称之为根的结点;(2)除根结点以外的其余结点可分为m(m>0)个互不相交的有限集T1, T2, …, Tm, 其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。 2.基本术语 根——即根结点(没有前驱) 叶子——即终端结点(没有后继) 森林——指m棵不相交的树的集合(例如删除A后的子树个数) 有序树——结点各子树从左至右有序,不能互换(左为第一) 无序树——结点各子树可互换位置。 双亲—— 即上层的那个结点(直接前驱) 孩子—— 即下层结点的子树的根(直接后继) 兄弟—— 同一双亲下的同层结点(孩子之间互称兄弟) 堂兄弟—— 即双亲位于同一层的结点(但并非同一双亲) 祖先—— 即从根到该结点所经分支的所有结点 子孙—— 即该结点下层子树中的任一结点 结点—— 即树的数据元素 结点的度—— 结点挂接的子树数 结点的层次—— 从根到该结点的层数(根结点算第一层) 终端结点—— 即度为 0 的结点,即叶子 分支结点—— 即度不为 0 的结点(也称为内部结点) 树的度—— 所有结点中的最大值 树的深度(高度)—— 指所有结点中最大的层数 三、 二叉树的基本概念 1 .二叉树的定义 做一个游戏:我现在在纸上写好了一个 100 以内的正整数数字,请大家想办法猜出我 写的是哪一个,注意猜的数字不能超过 7 个,我的回答只会告诉你“大了”或者“小了” ———— 折半查找 对于这种在某个阶段都是两种结果的情形,比如:开和关、 0 和 1、真和假、上和下、 对与错、正面与反面等,都适合用树状结构来处理,而且是一种很特殊的树状结构 ———— 二叉树 二叉树( Binary Tree )是 n ( n≥ 0 )个结点所构成的集合,它或为空树( n=0 );或为 非空树,对于非空树 T : ( 1 )有且仅有一个称之为根的结点; ( 2 )除根结点以外的其余结点分为两个互不相交的子集 T 1 和 T 2 ,分别称为 T 的左子树和 右子树,且 T 1 和 T 2 本身又都是二叉树。 2 .二叉树的性质 一棵深度为 k 的有 n 个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编 号,如果编号为 i ( 1≤ i≤ n )的结点与满二叉树中编号为 i 的结点在二叉树中的位置相同, 则这棵二叉树称为完全二叉树。 对完全二叉树,若从上至下、从左至右编号,则编号为 i 的结点, 其左孩子编号必为 2*i ; 其右孩子编号必为 2*i + 1 ; 其双亲的编号必为 i/2。