zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    logging- 日志记录
    apscheduler -定时任务
    mysql
    Time-python
    pandas 常用语句
    re 正则
    sublime text3的快捷键
    git 常用操作
    tf.nn的conv2d卷积与max_pool池化
    WebApi 接口返回值类型详解 ( 转 )
  • 原文地址:https://www.cnblogs.com/spore/p/11623585.html
Copyright © 2011-2022 走看看