概念
二叉排序树(二叉查找树),它或者是一颗空树,或者是具有以下性质的二叉树:
- 任意一个结点左子树上的所有结点值均小于该结点值
- 任意一个结点右子树上的所有结点值均大于该结点值
例如下图:
插入和建立二叉排序树
结点的数据结构
function newNode(value){
this.value = value;
this.left = null;
this.right = null;
}
插入操作
插入操作很简单,即用递归依次比较插入值与结点值的大小,找到插入的位置
function InsertNode(root, key){
if (!root.value){
//如果根结点不存在,则建立根结点
root.value = key;
return true;
}
if (root.value > key){
//当前结点值比插入值大,说明插入位置在当前结点值的左子树中
if (root.left){
//如果有左孩子结点,继续比较
InsertNode(root.left, key);
}else{
//插入操作
root.left = new newNode(key);
}
}else if (root.value < key){
//当前结点值比插入值小,说明插入位置在当前结点值的右子树中