4.1树的基本概念
一棵树是一些节点(node)的集合,这个集合可以是空集也可非空。对于没有儿子的节点成为树叶(leaf),即叶子节点。
路径(path):每两个相邻点的方向都是父节点到子节点,直至起始点找到目标点;
i节点的深度(depth):从根到i节点的唯一路径的长,其中根的深度为0;
i节点的高(height):从i节点到一片树叶的最长路径的长,其中所有叶子的高都是0;
一棵树的深度(depth of tree)等于其最深的树叶的深度,该深度等于这棵树的高。
4.2 二叉树
二叉树(binary)是一棵树,其中每个节点都不能有多于两个的儿子。
二叉树的一个性质是平均二叉树的深度要比节点个数N小得多;对于二叉查找树的深度平均值为O(logN)
- 二叉树的实现
struct BinaryNode
{
Object element; //节点上的数据
BinaryNode *left; //左儿子
BinaryNode *right; //右儿子
};
4.3二叉查找树(binary search tree)
二叉查找树是两种集合类set和map实现的基础。
使得二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有项的值均小于X中的项,而它的右子树中所有项的值均大于X中的项。
注意:由于树的递归定义,通常是递归地编写这些操作的例程。因为二叉查找树的平均深度为O(logN),所以一般不必担心栈空间被用尽。
待更新