二叉排序树:对于每个结点的值来说,左子树上所有结点的值都小于它,右子树上所有结点的值都大于它。
对集合{62,88,58,47,35,73,51,99,37,93}构建二叉树
上图的构造方式就是按顺序找位置,62做根结点,88比62大放到右子树,58比63小放左子树……
对二叉排序树进行中序遍历,遍历结果一定是有序的。对上图二叉树进行中序遍历:35,37,47,51,58,62,73,88,93,99。
查找就是从根节点开始判断,大于根结点去右子树继续找,小于根结点去左子树找,依次类推,在找到叶子结点的时候还没有找到,就代表该元素在这个集合中不存在。这个查找过程折半查找类似。
但是如果集合比较特殊,是一个递增的数组如{35,37,47,51,58,62,73,88,93,99}构建的二叉排序树就变成了这样
此时查找和顺序查找并无区别,还浪费了构建花费的时间。所有需要构建平衡二叉树。
平衡二叉树中每个结点的左子树和右子树的高度差不等大于1。