首页 > 其他 > 详细

二叉树插入操作

时间:2014-06-26 22:17:39      阅读:458      评论:0      收藏:0      [点我收藏+]
/*
功能:将一个节点插入到二叉树中节点的子节点中
输入: p,c ,RL
    p:节点将插入到p所指向的节点的子节点中
    c:指向待插入的节点
    RL:为0表示插入到左子树,为1表示插入到右子树
输出:bool
*/
template<typename T>
bool BinaryTree<T>::InsertChild(BTNode<T> *p,BTNode<T> *c,int RL)
{
    if(p)
    {
        if(RL==0) //插入到p的左节点
        {
            c->rchild=p->lchild;//p节点原有的左子树成为c的右子树
            p->lchild=c;//c成为p的左子树
        }
        else
        {
            c->rchild=p->rchild;
            p->rchild=c;
        }
        return true;
    }
    else
        return false;
}

如下有一个二叉树和一个节点,其中p指向节点2,c指向节点6。现在需要将c插入到p的左子树中。

bubuko.com,布布扣

 RL为0,c的右子结点指针(本来指向NULL)指向 p的左子节点(4)

bubuko.com,布布扣

将指向p左子节点的指针 指向c所指向的节点(6)

bubuko.com,布布扣

插入子节点完成

bubuko.com,布布扣

 

另一种实现形式:

template<typename T>
bool BinaryTree<T>::InsertChild(T e,T c,int RL)
{
    BTNode<T> *pe,*pc;
    pe=SearchNode(e);
    if(pe)
    {
        pc=new BTNode<T>;
        pc->data=c;
        pc->lchild=NULL;
        pc->rchild=NULL;
        if(RL==0)
        {
            pc->rchild=pe->lchild;
            pe->lchild=pc;
        }
        else
        {
            pc->rchild=pe->rchild;
            pe->rchild=pc;
        }
        return true;
    }
    cout<<"结点"<<e<<"不存在"<<endl;
    return false;
}

 

 

 

二叉树插入操作,布布扣,bubuko.com

二叉树插入操作

原文:http://www.cnblogs.com/qianwen/p/3807932.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!