zoukankan      html  css  js  c++  java
  • 二叉树插入操作

    /*
    功能:将一个节点插入到二叉树中节点的子节点中
    输入: 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=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;
    }
  • 相关阅读:
    JavaSE Day11
    JavaSE Day10
    JavaSE Day9
    JavaSE Day8
    JavaSE Day7
    a
    js 操作 字符串
    委托的生明与使用
    T-SQL 的简单查询语句
    asp.net服务控件的生命周期
  • 原文地址:https://www.cnblogs.com/qianwen/p/3807932.html
Copyright © 2011-2022 走看看