当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

关于后序递归建二叉树的方法

    最简单的一种方法就是逆向输入,然后采用“根右左 ”的顺序建立二叉树

 *********************************/

/**//**********Gamesduan*********/

/**//**********BiTreeInLast*********/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#define NULL 0
int n=0;

typedef struct bitnode...{  //树结构
 char data;
 struct bitnode *lchild,*rchild;
}bitnode;

bitnode *CreateBiTreeInPre()  //先序递归建树
{
 bitnode *m;
 char ch;
 scanf("%c",&ch);
 if(ch==' ') m=NULL;
 else
 {
  if(!(m=(bitnode *)malloc(sizeof(bitnode))))
   exit(0);
  m->data=ch;
  m->lchild=CreateBiTreeInPre();
  m->rchild=CreateBiTreeInPre();
 }
 return m;
}

bitnode *CreateBiTreeInLast1()   //第一种方法,用倒序输入的方式进行输入,输入为“c空b空空”
 {
 bitnode *T;
 char ch;
 scanf("%c",&ch);
 if(ch==' ')
  T=NULL;
 else
 {
  T=(bitnode *)malloc(sizeof(bitnode));
  T->data=ch;
  T->rchild=CreateBiTreeInLast2();   //先创建右子树
  T->lchild=CreateBiTreeInLast2();   //再创建左子树
 }
 return T;
}

void preorder(bitnode *t)  //先序递归输出
{
 if(t!=NULL)
 {
  printf("%c ",t->data);
  preorder(t->lchild);
  preorder(t->rchild);
 }
}

void main()
{
 bitnode *t=new bitnode;
 //t=CreateBiTreeInPre();  //先序
 t=CreateBiTreeInLast1();   //后序1
 preorder(t);
 }

相关内容
赞助商链接