每天一点数据结构之二叉树的插入与创建

来源:互联网 发布:js 判断数组是否为空 编辑:程序博客网 时间:2024/05/21 22:53

每天一点数据结构之二叉树的插入与创建

二叉树的插入:
1.判断树是否为空,如果为空则直接插入当前结点成为根结点
2.若根不为空,则判断是否小于根
3.小于根插入左子树
4.大于根插入右子树
5.以此循环下去,插入完成退出
 
<span style="font-size:18px;">//二叉树的插入BinaryTree.prototype.insert = function(data){    //在这里写入代码    var node = new BinaryTreeNode(data, null, null);    var nodeNow = this.root;    //若树为空,则直接插入成为根节点    if(this.root == null)    {        this.root = node;        return this.root;    }        //若树不为空,则判断是否小于根,小于插入左子树,大于插入右子树    while (nodeNow != null)    {        if ( node.data < nodeNow.data )   //插入左子树        {            if (nodeNow.left == null)     //如果无左子树,直接插入            {                nodeNow.left = node;                break;            }            else                          //如果有左子树,继续沿左子树比较                nodeNow = nodeNow.left;        }        else                              //插入右子树        {            if (nodeNow.right == null)    //如果无右子树,直接插入            {                nodeNow.right = node;                break;            }            else                          //如果有右子树,继续沿右子树比较                nodeNow = nodeNow.right;        }    }    return this.root;};</span>

二叉树的创建:
完成了插入,创建就十分简单了,首先创建一个空的二叉树,以数组的形式接收要插入的数据,遍历这个数组,调用插入函数将数组中的每一项都插入即可。

//二叉树的创建BinaryTree.prototype.create = function (array){var nodeTree =this;<span style="white-space:pre"></span>array.forEach(function (item) {<span style="white-space:pre"></span>nodeTree.insert(item);<span style="white-space:pre"></span>});}




0 0
原创粉丝点击