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

本文探讨了数据结构中的二叉树,重点讲解如何非递归地进行二叉树节点的插入和创建过程。

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

二叉树的插入:
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>});
}




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值