首页 > 代码库 > 二叉树插入操作

二叉树插入操作

/*功能:将一个节点插入到二叉树中节点的子节点中输入: 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的左子树中。

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

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

插入子节点完成

 

另一种实现形式:

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=http://www.mamicode.com/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;}