二叉树按层输入及先序输入,及三种输出

二叉树的指针和地址看的真难受,各种问题。
*&

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include "string.h"
#define num 100
using namespace std;
typedef char datatype;
typedef struct  BinTNode{
     BinTNode *lchild;
     BinTNode *rchild;
    char data;
}BinTNode,*BinTree;

//按层输入 ABC@D@F@@E#
void CreateBinTree(BinTree &bt)
{
    BinTNode *Q[num];
BinTNode *s;
int parent,child;
char ch;
ch=getchar();
bt=NULL;
parent=1;
child=0;
  while(ch!='#')
  {
      s=NULL;
      child++;
      if(ch!='@')
      {
          s= new BinTNode();
          s->data=ch;
          s->lchild=s->rchild=NULL;
      }
      Q[child]=s;
      if(child==1)
        bt=s;
      else if(s&&child>0)
      {
          parent=child/2;
          if(child%2==0)
            Q[parent]->lchild=s;
          else
            Q[parent]->rchild=s;
      }
      ch=getchar();
  }
}

//先序输入 AB#DE###C#F##
void createBiTree(BinTree &T)
{
    char c;
    cin >> c;
    if('#' == c)
        T = NULL;
    else
    {
        T = new BinTNode;
        T->data=c;
        createBiTree(T->lchild);
        createBiTree(T->rchild);
    }
}

void PreorderTraversal(BinTree T) {
	if(T==NULL)	return;
    cout<<T->data<<" ";
	PreorderTraversal(T->lchild);
	PreorderTraversal(T->rchild);
}

void InOrderTraveres(BinTree T) {
	if(T == NULL)	return;
	InOrderTraveres(T -> lchild);
	cout<<T->data<<" ";
	InOrderTraveres(T -> rchild);
}

void PostTraversing(BinTree T) {
    //cout<<" dsa"<<endl;
	if(T == NULL)	return;
	PostTraversing(T -> lchild );
	PostTraversing(T -> rchild);
	cout<<T->data<<" ";
}
int main ()
{
    //freopen("66.txt","r",stdin);
    BinTree T,S;
    cout<<"按层输入:"<<endl;
    CreateBinTree(T);
    cout<<"先序输出:";
    PreorderTraversal(T);
    cout<<endl<<"中序输出:";
    InOrderTraveres(T);
    cout<<endl<<"后序输出:";
    PostTraversing(T);
    cout<<endl<<endl;
    
    cout<<"先序输入:"<<endl;
    createBiTree(S);
	cout<<"先序输出:";
    PreorderTraversal(S);
    cout<<endl<<"中序输出:";
    InOrderTraveres(S);
    cout<<endl<<"后序输出:";
    PostTraversing(S);
    return 0;
}



猜你喜欢

转载自blog.csdn.net/curiosity9/article/details/84196961
今日推荐