二叉树的遍历

 二叉树

   二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (1)空二叉树——(a) (2)只有一个根结点的二叉树——(b) (3)右子树为空的二叉树——(c) (4)左子树为空的二叉树——(d) (5)完全二叉树——(e)注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形。(来自百度百科)

 

   二叉树的遍历:

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<debug.h>
typedef struct Bitree
{
  Bitree *rchild,*lchild;
  int data;
}Bitree,*BT;
BT T;
int Creattree(BT &T )
{ 
    int  n;
    scanf("%d",&n);
    if(n==-1) 
    T=NULL;
    else 
    {
    T=new Bitree;
    T->data=n;
    Creattree(T->lchild);
    Creattree(T->rchild);
    }
    return 0;
}
 
void  preordertraverse(BT T )
{
   if(T)
   {
     printf("%d ",T->data);
     preordertraverse(T->lchild);
     preordertraverse(T->rchild);
   }
}
void  inordertraverse(BT T)
{
  if(T)
  {
    inordertraverse(T->lchild);
    printf("%d ",T->data);
    inordertraverse(T->rchild);
  }
}
void postordertraverse(BT T )
{
 if(T)
 { 
   postordertraverse(T->lchild);
   postordertraverse(T->rchild);
   printf("%d ",T->data);
}
}
      
int main( )
{
   // BT *T;
   Debug();
   Creattree(T);
   printf("\n*******\n");
   preordertraverse(T);
   printf("\n*************\n");
   inordertraverse(T);
   printf("\n*************\n");
   postordertraverse(T);
   system("pause");
   return 0;
}

posted on 2011-04-15 22:07  more think, more gains  阅读(194)  评论(0编辑  收藏  举报

导航