在二叉树中已经讲过,普通的二叉搜索树作为数据存储工具具有重要的优势:可以快速地找到一个给定值的数据项,并且可以快速的插入数据和删除数据。其他的数据存储结构,如数组在删除元素时必须要对删除元素后面的每一位元素都进行前移操作,而链表查询元素时必须要从初始元素一个一个的遍历到待查询元素,执行操作都不如二叉树来的快。
但是,在二叉树文章中末尾讲过,如果树中插入的是随机数据,则增删查操作执行效果很好,因为数据是分散的、无序的。但是,如果插入的是有序数据(10,20,30,40...)或者(96,80,56,32...), 二叉树的执行效率会变得特别慢,因为当插入的数据有序时,二叉树就是非平衡的了。而对于非平衡树,它的快速查找(插入,删除)指定项的能力就丧失了。
因为二叉树中任意一个节点的左子节点的关键字值小于这个节点的值,右子节点的关键字的值大于或等于这个节点的值。
例如
向树中依次插入(10,20,30,40...),最终树的形态如图:
向树中