7-2 其余的一些树
1、二叉排序树
二叉排序树可以通过递归的方法来定义,它或者是空二叉树,或者是具有如下定义的二叉树:
左子树上所有节点的关键字均小于根节点的关键字;右子树上所有节点的关键字均大于等于根节点的关键字。
左子树和右子树本身又各是一颗二叉排序树。
二叉排序树的生成
从二叉排序树的定义中可以得出一个重要性质:
按中序遍历该树所得的中序序列是一个递增有序列!因此二叉排序树常用来对数据进行排序操作。利用二叉排序树来组织数据,可以减少数据查找次数,提高效率。
由给定的数据序列生成二叉排序树的过程是在二叉排序树上插入节点的过程,对一个序列{k1, k2, k3 ,..., kn},先设一颗空二叉排序树,然后将序列中的元素顺次生成节点后逐个插入。
第一步:k1作为二叉排序树的根;
第二步:若k2 < k1, 则k2 所在节点应插入到k1的左子树上;否则,插入到k1的右子树上。
第三步:读入 ki,如果 ki<k1,则进入左子树,反之进入右子树;继续与子树之根节点比较,直到某节点kj, 若有 ki<kj 且 kj的左子树为空,则ki插入到kj的左子树上; 若ki>=kj 且 kj的