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

Posted spore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.对于每一个元素值为x的阶段,删去以他为根的子树并释放相应的空间相关的知识,希望对你有一定的参考价值。

技术图片
#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的阶段,删去以他为根的子树并释放相应的空间的主要内容,如果未能解决你的问题,请参考以下文章

codevs 1380

JoyOI1940 创世纪

CF600E Lomsat gelral(线段树合并)

P3391 模板文艺平衡树(Splay)

Luogu P2014 选课 题解报告

并查集及其优化