二叉搜索树的特点:当前root节点的左子树中所有的节点都小于当前root节点,右子树的所有节点都大于当前root节点。root节点为左右子树中任意节点时,同样如此。
代码:
// 定义节点结构
function Node(data, left, right) {
this.data = data;
this.left = left;
this.right = right;
}
// 定义BinaryTree的结构
function BinaryTree() {
this.root = null;
this.insert = function(data) {
let node = new Node(data, null, null);
if(this.root === null) {
this.root = node;
} else {
insertNode(this.root, node);
}
};
// 插入节点函数,如果newNode小于当前root节点,则往左子树搜索,
// 如果左孩子为空,则放到左孩子,如果不为空,则再次向左子树搜索
function insertNode(root, newNode) {
if(newNode.data < root.data) {
if(root.left === null) {
root.left = newNode;
} else {
insertNode(root.left, newNode);
}
} else {
if(root.right === null) {
root.right = newNode;
} else {
insertNode(root.right, newNode);
}
}
}
}