C语言- 基础数据结构和算法 - 14 二叉树实践_#号法创建二叉树20220612
作者:互联网
14 二叉树实践_#号法创建二叉树20220612,
听黑马程序员教程《基础数据结构和算法 (C版本)》,
照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1
喜欢的朋友可以去看看,欢迎大家一起交流学习。
14 二叉树实践_#号法创建二叉树20220612.c
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 // 二叉树结点 6 typedef struct BINARYNODE{ 7 char ch; 8 struct BINARYNODE* lchild; // 左结点 9 struct BINARYNODE* rchild; // 右结点 10 }BinaryNode; 11 12 // 递归遍历 输出 13 void Recursion(BinaryNode* root,int D){ 14 15 if(root==NULL){ 16 return; 17 } 18 19 switch(D){ 20 21 case 1: // 先序遍历:D L R 22 23 // 先访问根结点 D 24 printf("%c ",root->ch); 25 // 再遍历左子树 L。左子树是“树”,有根的子结点,所以递归重头来。 26 Recursion(root->lchild,1); 27 // 再遍历右子树 R 28 Recursion(root->rchild,1); 29 break; 30 31 case 2: // 中序遍历:L D R 32 33 // 先访问左子数 L 34 Recursion(root->lchild,2); 35 // 再访问根结点 D 36 printf("%c ",root->ch); 37 // 再访问右子树 R 38 Recursion(root->rchild,2); 39 break; 40 41 case 3: // 后序遍历:L R D 42 43 // 先访问左子数 L 44 Recursion(root->lchild,3); 45 // 再访问右子树 R 46 Recursion(root->rchild,3); 47 // 再访问根结点 D 48 printf("%c ",root->ch); 49 break; 50 default: 51 break; 52 } 53 54 } 55 56 // #号法创建二叉树 57 BinaryNode* CreateBinaryTree(){ 58 59 fflush(stdin); // 清空缓存 60 char ch; 61 scanf("%c",&ch); 62 63 BinaryNode* node; 64 BinaryNode* lchild; 65 BinaryNode* rchild; 66 67 if(ch=='#'){ 68 node = NULL; 69 } 70 else{ 71 lchild = CreateBinaryTree(); 72 rchild = CreateBinaryTree(); 73 74 node = (BinaryNode*)malloc(sizeof(BinaryNode)); 75 node->ch = ch; 76 node->lchild = lchild; // 先创建左子树 77 node->rchild = rchild; // 再创建右子树 78 } 79 80 return node; 81 } 82 83 int main(){ 84 printf("好好学习,天天向上~!\t\t 14 二叉树实践_#号法创建二叉树20220612\n\n"); 85 86 // 创建二叉树 87 BinaryNode* root = CreateBinaryTree(); 88 89 // 打印输出 90 Recursion(root,1); 91 92 93 94 95 printf("\n\n"); 96 system("pause"); 97 return 0; 98 99 }
标签:ch,14,Recursion,20220612,BinaryNode,rchild,root,二叉树 来源: https://www.cnblogs.com/stou/p/16368298.html