二叉树的遍历
二叉树
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: (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) 编辑 收藏 举报