ID #5726

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

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

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

/**//**********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);
 }


2011-07-01 18:29
阅读:
I'm VC , Just U know Y
本站部分文章来源于互联网,版权归原作者所有。

延伸阅读:

比较数据排序前后的查找次数

二叉树的创建、前序遍历、中序遍历、后序遍历

N皇后问题摆法算法描述