javascript JavaScript中的简单二叉树实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript JavaScript中的简单二叉树实现相关的知识,希望对你有一定的参考价值。

/**
 * Binary Tree
 * (c) 2014 Ben Lesh <ben@benlesh.com>
 * MIT license
 */

/*
 * A simple Binary Tree implementation in JavaScript
 */


function BinaryTree() {
    var self = this;
    var root;
    
    function traverse(value, fn) {
        var found = root,
            side, parent;
        while(found && found.value !== value) {
            parent = found;
            if(value > found.value) {
                side = 'right';
                found = found.right;    
            } else {
                side = 'left';
                found = found.left;
            }
        }
        return { found: found, parent: parent, side: side };
    }
    
    self.add = function (value, item) {
        if(typeof value === 'undefined') {
            throw new Error('value cannot be undefined');
        }
        
        var node = new BinaryTreeNode(value, item);
        if(!root) {
            root = node;
            return;
        }
        
        var result = traverse(value);
        if(!result.found) {
            result.parent[result.side] = node;
        } else {
            throw new Error('two items of the same value added');
        }
    };

    self.search = function(value) {
        var result = traverse(value);
        return result.found ? result.found.item : null;
    };
    
    self.contains = function(value) {
        return !!self.find(value)
    };
    
    self.root = function (){
        return root;
    };
    
    function BinaryTreeNode(value, item) {
        this.value = value;
        this.item = item;
        this.left = null;
        this.right = null;
    }
};

以上是关于javascript JavaScript中的简单二叉树实现的主要内容,如果未能解决你的问题,请参考以下文章

javascript JavaScript中的简单二叉树实现

Javascript 中的简单 HTML 清理程序

使用简单数组中的 javascript 创建动态 html 表

JavaScript中的简单范围/值滑块

javascript中的简单分页

javascript中变量中的简单引号