1.一棵树是N个节点和N-1条边的集合。
2.对任意节点n_i,n_i的深度为从跟到n_i的唯一路径的长。因此跟的深度为1。n_i的高是从n_i到一片树叶的最长路径的长。因此所有的树叶的高都是1。一棵树的高等于它根的高。
3.二叉查找树 其深度的平均值为O(logN),但深度最大也能够达到N-1
二叉树节点声明:
typedef struct TreeNode *PtrNode typedef struct PtrNode Tree; struct TreeNode { ElementType Element; Tree Left; Tree Right; };
4.二叉树的主要用处之一是在编译器的设计领域:
语法树:树中的每个内部结点表示一个运算,而该结点的子结点表示该运算的分量。
表达式树:树叶是操作数比如常量或变量,而其他的结点为操作符。
5.通过表达式(树)得到其后缀表示。通过后缀得到一个表达式树。
6.二叉查找树:二叉树查找树是一棵二叉树,不同的是对于树中的每个结点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有关键字值大于X的关键字值。(特殊的二叉树)
7.如果删除的次数不多,则通常使用的策略是懒惰删除:当一个元素要被删除时,它仍留在树中,而是只做了个被删除的记号。
8.平衡查找树AVL树:每个结点的左子树和右子树的高度最多差一的二叉查找树。空树的高度定义为-1.(特殊的二叉查找树)