二叉树
1 #include <cstdio> 2 #include <cstdlib> 3 #include <windows.h> 4 #define MaxChild 10 5 typedef char ElemType; 6 typedef struct BiTNode 7 { 8 ElemType data; //节点的数据域 9 struct BiTNode *lchild,*rchild; //左右指针 10 }*BiTree; 11 12 void visit(ElemType c,int level) //访问二叉树节点,输出包含字符'D'的节点位于二叉树的层数 13 { 14 if(c=='D') 15 printf("%c is at %d lever of BiTree\n",c,level); 16 } 17 18 void PreOrderTraverse(BiTree T,int level) //先序遍历 19 { 20 if(T) 21 { 22 visit(T->data,level); //访问根节点 23 PreOrderTraverse(T->lchild,level+1); //先序遍历T的左子树 24 PreOrderTraverse(T->rchild,level+1); //先序遍历T的右子树 25 } 26 } 27 28 void InOrderTraverse(BiTree T,int level) //中序遍历 29 { 30 if(T) 31 { 32 InOrderTraverse(T->lchild,level+1); 33 visit(T->data,level); 34 InOrderTraverse(T->rchild,level+1); 35 } 36 } 37 38 void PosOrderTraverse(BiTree T,int level) //后序遍历 39 { 40 if(T) 41 { 42 PosOrderTraverse(T->lchild,level+1); 43 PosOrderTraverse(T->rchild,level+1); 44 visit(T->data,level); 45 } 46 } 47 48 void CreatBiTree(BiTree *T) //先序序列创建一个二叉树 49 { 50 ElemType c; 51 scanf("%c",&c); 52 if(c==' ') *T=NULL; 53 else 54 { 55 *T=(BiTNode*)malloc(sizeof(BiTNode)); //创建根节点 56 (*T)->data=c; //向根节点输入数据 57 CreatBiTree(&((*T)->lchild)); //递归创建左子树 58 CreatBiTree(&((*T)->rchild)); //递归创建右子树 59 } 60 } 61 62 int main() 63 { 64 int level=1; 65 BiTree T=NULL; 66 CreatBiTree(&T); 67 PreOrderTraverse(T,level); 68 system("pause"); 69 return 0; 70 }
——现在的努力是为了小时候吹过的牛B!!