一、树的定义,表示和术语
树的定义与性质
树(Tree)是n( n ≥ 0)个结点构成的有限集合。当n=0时,称为空树;对于任一棵非空树,具备以下性质:
- 有且只有一个称为根的结点(root);
- 其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,这些树称为原来树的“子树(SubTree)”。每个子树的根结点都与root有一条相连的边,root是这些字数根结点的“父结点(Parent)”。
- 子树是不相交的;
- 除了根结点外,每个结点有且仅有一个父结点。
树的一些基本术语
- 结点的度(Degree):一个结点的度是其子树的个数;
- 树的度:树的所有结点中最大的度数;
- 叶结点(Leaf):度为0的点;叶结点又称端结点;
- 父结点(Parent):有子树的结点是其子树的根结点的父结点;
- 子结点(Child):若A结点时B结点的父结点,则称B结点时A结点的子结点;
- 兄弟结点(Sibling):具有同意父节点的各结点彼此是兄弟节点。
- 分支:树中两个相邻节点的连边称为一个分支。
- 路径和路径长度:从结点n1到nk的路径被定义为一个结点序列,一条路径的长度为这条路径所包含的边(分支)的个数。
- 祖先节点(Ancestor):沿树根到某一结点路径上的所有结点都是这个结点的祖先结点
- 子孙结点(Descendant):某一结点的子树中的所有结点是这个结点的子孙;
- 结点的层次(Level):规定根结点在1层,其他任一结点的层数是其父结点的层数加1;
- 树的高度(Height):树中所有结点中的最大层次是这棵树的高度(也有把根节点定义成高度为1的);
二、二叉树
二叉树的定义
一棵二叉树T是一个有穷的结点集合。这个集合可以为空,若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成。
- 二叉树具体的五种基本形态
空二叉树、只有根结点的二叉树、只有根结点和左子树的二叉树、只有根结点和右子树的二叉树、具有根结点、左右子树的二叉树。 - 二叉树除了每个结点至多有两棵子树外,子树有左右顺序之分。
特殊二叉树
二叉树的深度小于结点数N,平均深度是O(根号N)
- 斜二叉树(Skewed Binary Tree),又称退化二叉树;
- 完美二叉树(Perfect Binary Tree),又称满二叉树 ;
- 完全二叉树(Complete Binary Tree)
一颗深度为 k 的有 n 个结点的二叉树,对树中的结点按从上到下,从左到右的顺序进行编号,如果编号为 i 的结点在二叉树中的位置相同,则这棵二叉树被称为完全二叉树。
退化二叉树(左),完全二叉树(中)与完美二叉树(右)
二叉树的性质
- 在非空二叉树中,第 i 层上至少有2^(i-1)个结点(i ≧ 1);
- 深度为 k 的二叉树至多有2^k-1个结点(k ≧ 1);
- 对于任何一棵二叉树,若其叶子结点树为N0,度为2的结点数为N2,则N0=N2+1。
(3)如果2i+1>n;则结点 i 无右子结点,否则,器右子结点编号是2i+1