C++ 层次输出代码

这是层次输出的代码(C++)
    
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
using namespace std;
#define MAX_VALUE 100;

typedef struct BTNode
	            { char data;
	              BTNode* lchild;
	              BTNode* rchild;
	            }BT,*B;

typedef struct QUEUE
    { int front;
      int rear;
      BT* s[MAX_VALUE];
    }Q;

class HD
{
public:
	HD(){ 
		   B T;
		   root=CreateBiTree( );
	};
	~HD(){
		  Delete(root);
		   };
	B CreateBiTree()
	 {   BT* T=new BT;
		 char ch;
		 ch = getchar();

	  if(ch=='\n') exit(1);
       if(ch==' ') T=NULL; 
       else{ 
          if(!(T=(BT *)malloc(sizeof(BT)))) 
		  {cout<<"分配结点存储空间失败"; 
		    exit(1);
		  }
          T->data=ch; 
		 T->lchild=CreateBiTree(); 
         T->lchild=CreateBiTree(); 
          } 
	  return T;
	  };
void CREATE_QUEUE()
    {  
      s.front=s.rear=0;
    }
bool IS_EMPTY()
    {
		return s.front==s.rear; 
    }
bool IS_FULL()
    {   
		return  (s.rear+1)%MAX_VALUE==s.front; 
    }
void IN_QUEUE(B t)
    {  
       s.s[s.rear]=t;
       s.rear=(s.rear+1)%MAX_VALUE;
    }
BT* OUT_QUEUE()
    {  BT* T=new BT;
       T=s.s[s.front];
       s.front=(s.front+1)%MAX_VALUE;
	   return T;
    }
void OUT_BINTREE()
     {  
       B t;
       CREATE_QUEUE();
       if(root==NULL)
	       exit(1);    
		   IN_QUEUE(root);
                while(!IS_EMPTY())
                       { t=OUT_QUEUE();
                         if(t->data!=NULL)
                             { cout<<t->data;
                               if(!IS_FULL())
                                    IN_QUEUE(t->lchild);
                               if(!IS_FULL())    
                                    IN_QUEUE(t->rchild);
                              }
                          else
                                 cout<<"\n";
                 
                        }
	             
       }
void Delete(B T)
      { 
		Delete(T->lchild);
        Delete(T->rchild);
        delete T;
      }

protected:
	    Q s;
	    B root;	
};
void main()
    {  
	  HD hd;
      hd.OUT_BINTREE();

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值