码迷,mamicode.com
首页 > 其他好文 > 详细

11.对于每一个元素值为x的阶段,删去以他为根的子树并释放相应的空间

时间:2019-10-05 00:27:15      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:class   std   ini   event   pre   sem   span   enqueue   alt   

技术图片
#include <stdio.h>
//删除以x元素为根的所有子树

void Del_x(Bitree bt) //后序遍历删除以bt为根的子树
{
    if(bt)
    {
        Del_x(bt->lchild);
        Del_x(bt->rchlid);
        free(bt);
    }
}

//在二叉树上查找所有以x为元素值的结点,并删除以其为根的子树
void Search_x(Bitree bt,Elempty x)
{
    Bitree Q[]; //Q是存放二叉树结点指针的队列。容量足够大
    if(bt) //在树非空的情况下进行
    {
        if(bt->data==x) //若根结点的值为x,则删除整棵树
        {
            Del_x(bt);
            exit(0);
        }
        InitQueue(Q);
        EnQueue(Q,bt);
        while(!IsEmpty(Q))
        {
            DeQueue(Q,p); //删除队头元素,并用p返回
            if(p->lchild) //如果右子树不空
            {
               if(p->lchild->data==x) //左子树符合删除左子树
                {
                    Del_x(p->lchild);
                    p->lchild==NULL;
                }
               else
                EnQueue(Q,p->lchild);  //父节点的左子女置空
            }
           if(p->rchild) //如果右子树不空
           {
               if(p->rchild->data==x)
                {
                    Del_x(p->rchild);
                    p->rchild=NULL;
                }
                else
                    EnQueue(Q,p->rchlid);
           }

        }
    }
}
View Code

 

11.对于每一个元素值为x的阶段,删去以他为根的子树并释放相应的空间

标签:class   std   ini   event   pre   sem   span   enqueue   alt   

原文地址:https://www.cnblogs.com/spore/p/11623585.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!