概述
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("%dt",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("%dt",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("%dt",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
转载于:https://www.cnblogs.com/OneL1fe/p/6531520.html
最后
以上就是复杂板凳为你收集整理的二叉树的建立和三种遍历的全部内容,希望文章能够帮你解决二叉树的建立和三种遍历所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复