二叉树的建立和三种遍历
Posted 夜梦多离殇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的建立和三种遍历相关的知识,希望对你有一定的参考价值。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <assert.h> 4 #include <string.h> 5 typedef struct tree{ 6 int data; 7 struct tree *pLeft; 8 struct tree *pRight; 9 }*pT,T; 10 pT CreateTree(){ 11 int data=0; 12 pT p=NULL; 13 puts("请输入要插入的数据:"); 14 scanf("%d",&data); 15 if(data==0) 16 return NULL; 17 p=(pT)malloc(sizeof(T)); 18 p->data=data; 19 printf("输入%d 的左节点值:",data); 20 p->pLeft=CreateTree(); 21 printf("输入%d 的右节点值:",data); 22 p->pRight=CreateTree(); 23 return p; 24 } 25 void PreOrder(pT root){ 26 if(root==NULL) 27 return; 28 printf("%d\t",root->data);//访问根 29 PreOrder(root->pLeft);//访问左子树 30 PreOrder(root->pRight);//访问右子树 31 } 32 void InOrder(pT root){ 33 if(root==NULL) 34 return; 35 if(root->pLeft!=NULL) 36 InOrder(root->pLeft);//访问左子树 37 printf("%d\t",root->data);//访问根 38 if(root->pRight!=NULL) 39 InOrder(root->pRight);//访问右子树 40 } 41 void PostOrder(pT root){ 42 if(root==NULL) 43 return; 44 if(root->pLeft!=NULL) 45 PostOrder(root->pLeft); 46 if(root->pRight!=NULL) 47 PostOrder(root->pRight); 48 printf("%d\t",root->data); 49 } 50 int main(){ 51 pT root; 52 root=CreateTree(); 53 PreOrder(root); 54 putchar(‘\n‘); 55 InOrder(root); 56 putchar(‘\n‘); 57 PostOrder(root); 58 return 0; 59 }
输入:
1 2 4 0 7 0 0 5 0 0 3 0 6 0 0
输出:
请输入要插入的数据: 输入1 的左节点值:请输入要插入的数据: 输入2 的左节点值:请输入要插入的数据: 输入4 的左节点值:请输入要插入的数据: 输入4 的右节点值:请输入要插入的数据: 输入7 的左节点值:请输入要插入的数据: 输入7 的右节点值:请输入要插入的数据: 输入2 的右节点值:请输入要插入的数据: 输入5 的左节点值:请输入要插入的数据: 输入5 的右节点值:请输入要插入的数据: 输入1 的右节点值:请输入要插入的数据: 输入3 的左节点值:请输入要插入的数据: 输入3 的右节点值:请输入要插入的数据: 输入6 的左节点值:请输入要插入的数据: 输入6 的右节点值:请输入要插入的数据: 1 2 4 7 5 3 6 4 7 2 5 1 3 6 7 4 5 2 6 3 1
通过测试:
http://ideone.com/Qo2djs
以上是关于二叉树的建立和三种遍历的主要内容,如果未能解决你的问题,请参考以下文章