数据结构之二叉搜索树(BST)--JavaScript实现

编程之家收集整理的这篇文章主要介绍了数据结构之二叉搜索树(BST)--JavaScript实现编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

原理:

叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二叉排序树存储结构中序遍历二叉排序树可得到一个关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。每次插入的新的结点都是二叉排序树上新的叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的指针,由空变为非空即可。搜索,插入,删除的复杂度等于树高,O(log(n)).

JavaScript实现:

        
        var BinarySearchTree = function(){
            this.root = null;
            
        }
        
        BinarySearchTree.prototype = {
            insert: (key){//插入
                var newNode = new this.Node(key);
                if(this.root === ){
                    this.root = newNode;
                }else{
                    this.insertNode(.root,newNode)
                }
                console.log(.root)
            },inOrderTraverse: (callback){//中序查找
                this.inOrderTraverseNode((callback){//先序查找
                this.preOrderTraverseNode((callback){//后序查找
                this.postOrderTraverseNode((){//最小值
                return this.minNode((){//最大值
                this.maxNode((key){//查找
                this.searchNode((key){//移除树节点
                this.removeNode((key){
                this.key = key;
                this.left = ;
                this.right = ;
            },insertNode: (node,newNode){
                if(newNode.key < node.key){
                    if(node.left === ){
                        node.left = newNode;
                    }{
                        .insertNode(node.left,newNode)
                    }
                }if(node.right === ){
                        node.right =.insertNode(node.right,newNode)
                    }
                }
            },inOrderTraverseNode: if(node !== .inOrderTraverseNode(node.left,callback);
                    callback(node.key);
                    .inOrderTraverseNode(node.right,callback);
                }
            },preOrderTraverseNode: ){
                    callback(node.key);
                    .preOrderTraverseNode(node.left,callback);
                    .preOrderTraverseNode(node.right,postOrderTraverseNode: .postOrderTraverseNode(node.left,1)">.postOrderTraverseNode(node.right,callback);
                    callback(node.key);
                }
            },minNode: (node){
                if(node){
                    while(node && node.left !== ){
                        node = node.left;
                    }
                    return node.key;
                }
                while(node && node.right !==  node.right;
                    }
                    if(node === )
                falseif(key <.searchNode(node.left,key);
                }else if(key >.searchNode(node.right,1)">true;
                }
            },removeNode(node,1)">;
                
                 node.key){
                    node.left = .removeNode(node.left,key);
                     node;
                } node.key){
                    node.right = .removeNode(node.right,1)">null && node.right === ){
                        node = ;
                         node;
                    } node.right;
                         node.left;
                         node;
                    }
                    
                    var aux = .findMinNode(node.right);
                    node.key = aux.key;
                    node.right =  node;
                }
            },findMinNode: ;
            }
        }
        

 

总结

以上是编程之家为你收集整理的数据结构之二叉搜索树(BST)--JavaScript实现全部内容,希望文章能够帮你解决数据结构之二叉搜索树(BST)--JavaScript实现所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群:1065694478(已满)
编程之家官方2群:163560250(已满)
编程之家官方3群:312128206(已满)
编程之家官方4群:230427597

相关文章

猜你在找的JavaScript相关文章

题目来自于 &quot;leetcode&quot; 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原
列表[List]的定义 列表是一组有序的数据。每个列表中的数据项称为元素。在 JavaScript 中,列表中的元素 可以是任意数据类型。列表中可以保存多少元素并没有事先限定,实际使用时元素的数量 受
原理: 叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二叉排序树的存储结构。中序遍历二叉排序树可得到一个关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程
highlight: monokai theme: vue-pro 上一篇文章中使用列表(List)对数据排序,当时底层储存数据的数据结构是数组。本文将讨论另外一种列表:链表。我们会解释为什么有时链表
javascript基础知识(在javascript中&#160;=&#160;是赋值符号) 变量 合法的变量命名规则:大小写英文、数字、&#160;$&#160;和&#160;_&#160;的组合,
Function原型链中的 apply,call 和 bind 方法是 JavaScript 中相当重要的概念,与 this 关键字密切相关,相当一部分人对它们的理解还是比较浅显,所谓js基础扎实,绕
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它可以是一棵空树,也可以是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它
方法一(被处理的必须为&#160;Number&#160;类型) 方法二(被处理的为String类型的数字)
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注