插入数值 //初始化node对象 function Node ( data) { this.data = data; this.left = null; this.right = null; } // 定义插入对象 function BST () { this.root = null; this.size = size; this.count = 0; this.insert = insert; this.show = show; } //查询节点个数 function size () { return this.count; } // 展示节点树 function show () { return this.root; } function insert (data) { var n = new Node(data, null, null); if (this.root == null) { //如果不存在节点,则此节点是根节点 this.root = n; this.count++; } else { var current = this.root; var parent; while(current) { parent = current; if(data < current.data){ current = current.left; if(current == null) { parent.left = n; this.count++; break; } } else if (data > current.data){ current = current.right; if(current == null) { parent.right = n; this.count++; break; } } else { current.data == data; break; } } } } 插入键值对
//初始化node对象 function Node (key ,value) { this.key = key; this.value = value; this.left = null; this.right = null; } // 定义插入对象 function BST () { this.root = null; this.size = size; this.count = 0; this.insert = insert; this.show = show; this.contain = contain; this.search = search; } //查询节点个数 function size () { return this.count; } // 展示节点树 function show () { return this.root; } //插入 function insert (key, value) { var n = new Node(key, value); if (this.root == null) { //如果不存在节点,则此节点是根节点 this.count++; return this.root = n; } else { var current = this.root; var parent; while(current) { parent = current; if(key < current.key){ current = current.left; if(current == null) { parent.left = n; this.count++; break; } } else if (key > current.key){ current = current.right; if(current == null) { parent.right = n; this.count++; break; } } else { current = n; break; } } } } //查找是否含有这个值 function contain (key) { if(!this.root){ return false; } var current = this.root; while (current){ if (key == current.key) { return true; } else if (key > current.key){ current = current.right; } else { current = current.left; } } } //查找
function search (key) { if(!this.root){ return null; } var current = this.root; while (current){ if (key == current.key) { return current; } else if (key > current.key){ current = current.right; } else { current = current.left; } } }