js_bintrees, 二进制搜索树的Javascript实现

分享于 

4分钟阅读

GitHub

  繁體 雙語
Observable binary tree data structures for CanJS
  • 源代码名称:js_bintrees
  • 源代码网址:http://www.github.com/vadimg/js_bintrees
  • js_bintrees源代码文档
  • js_bintrees源代码下载
  • Git URL:
    git://www.github.com/vadimg/js_bintrees.git
    Git Clone代码到本地:
    git clone http://www.github.com/vadimg/js_bintrees
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/vadimg/js_bintrees
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    二进制树 Build Status

    这个软件包提供了用Javascript编写的二进制和红色黑搜索树。 它是在MIT许可下发布的。

    二进制搜索树是一种很好的按排序顺序存储数据的方法。 红黑树是平衡自身的二叉树的变体。

    Algorithms Walker的算法: http://eternallyconfuzzled.com/jsw_home.aspx

    • 二叉搜索树二叉搜索树
    • RBTree - 红黑树

    快速入门

    node.js:

    
    npm install bintrees
    
    
    
    
    var RBTree =require('bintrees').RBTree;var tree =newRBTree(function(a, b) { return a - b; });tree.insert(2);tree.insert(-3);

    有关详细信息,请参阅示例/node.js

    在浏览器中:

    <scriptsrc="/path/to/rbtree.js"></script>
    <script>var tree =newRBTree(function(a, b) { return a - b; });tree.insert(0);tree.insert(1);</script>

    有关详细信息,请参阅示例/clients。html

    构造函数

    需要 1个参数:比较器函数 f(a,b) 返回:

    • 0 如果 == b
    • 0 如果> b

    • <0 如果 <为空

    方法

    插入( 项)

    将项目插入到树中。 如果插入,则返回 true,如果重复则返回 false。

    删除( 项)

    从树中移除项。 如果删除,则返回 true,如果未找到则返回 false。

    大小

    树中的节点数。

    ( )

    删除树中的所有节点。

    查找( 项)

    如果找到 node 数据,则返回,否则返回 null。

    findIter ( 项)

    如果找到,则返回到 node的迭代器,否则为空。

    ( 项)

    将迭代器返回到树 node,或者在项目之后。 如果树为空,则返回空迭代器。

    注意:在版本1 中更改,以匹配 C++ lower_bound

    upperBound ( 项)

    将一个迭代器立即返回到该项目之后的树 node。 如果树为空,则返回空迭代器。

    注意:在版本1 中更改,以匹配 C++ upper_bound

    ( )

    返回树中的最小 node 数据;如果树为空,则返回 null。

    ( )

    返回树中的最大 node 数据;如果树为空,则返回 null。

    每个( f ) 个字节

    调用 node的每个数据上的f,按顺序。

    ( f )

    对 node的每个数据进行反向调用,顺序相反。

    迭代器( )

    返回一个空迭代器请参见迭代器节 below。

    迭代器

    tree.iterator() 将返回一个空迭代器。 在空迭代器上,

    • next() 将返回树中的第一个元素
    • prev() 将返回树中的最后一个元素

    否则

    • next() 将返回下一个元素
    • prev() 将返回前一个元素
    • data() 将返回迭代器指向的node

    当迭代到达末尾时,迭代器再次变成空迭代器。

    向前迭代示例:

    var it=tree.iterator(), item;while((item =it.next()) !==null) {
     // do stuff with item}

    如果你正遍历树,你总是可以调用 prev() 返回,反之亦然。

    注意:当你从树中添加或者删除元素时,迭代器会变成无效。

    产品使用情况

    • Coinbase交换,自 2015年月26日。
    • 如果你在生产中使用这里产品,请让我知道 ! ( 在请求请求中将你的公司添加到这里自述文件)

    JAVA  Javascript  IMP  Implementation  BIN    
    相关文章