C语言二叉树的建立与遍历

C语言二叉树的建立与遍历

2023年6月22日发(作者:)

C语⾔⼆叉树的建⽴与遍历⼆叉树的建⽴和遍历都要⽤到递归,先暂时保存⼀下代码,其中主要是理解递归的思想,其它的就都好理解了。这⾥是三种遍历⽅式,其实理解⼀种,其它的⼏个就都理解了,就是打印出来的顺序不⼀样⽽已。建⽴和遍历的⽅式差不多。也分好⼏种⽅式建⽴,这⾥ 就写⼀种,就是先序建⽴ 1 #include 2 #include 3

4 typedef struct TreeNode{ 5 char ch; 6 struct TreeNode *lchild, *rchild; 7 }Tree, *PTree;//定义树节点的结构体 8 void createBiTree(PTree *p)//建⽴⼆叉树 9 {10 char ch;11 scanf("%c", &ch);12 getchar();//此时%c读取的是单个字符,所以⽤那个getchar来接收⼀下13 if(ch == '#')14 *p = NULL;15 else16 {17 *p = (PTree)malloc(sizeof(Tree));18 (*p) -> ch = ch;19 printf("请输⼊%c的左⼦树n", ch);20 createBiTree(&(*p) -> lchild);21 printf("请输⼊%c的右⼦树n", ch);22 createBiTree(&(*p) -> rchild);23 }24

25 }26 void preOrderTraverse(PTree p)//前序遍历27 {28 if(p == NULL)29 return ;30 printf("%c ", p -> ch);31 preOrderTraverse(p -> lchild);32 preOrderTraverse(p -> rchild);33 }34 void InOrderTraverse(PTree p)//中序遍历35 {36 if(p == NULL)37 return;38 InOrderTraverse(p -> lchild);39 printf("%c ", p -> ch);40 InOrderTraverse(p -> rchild);41 }42 void BackOrderTraverse(PTree p)//后续遍历43 {44 if(p == NULL)45 return ;46 BackOrderTraverse(p -> lchild);47 BackOrderTraverse(p -> rchild);48 printf("%c ", p -> ch);49 }50 int main()51 {52 PTree pt;53 createBiTree(&pt);54 preOrderTraverse(pt);55 printf("n");56 InOrderTraverse(pt);57 printf("n");58 BackOrderTraverse(pt);59 printf("n");60 return 0;61 }

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687381772a5839.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信