ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C语言- 基础数据结构和算法 - 14 二叉树实践_#号法创建二叉树20220612

2022-06-12 17:02:37  阅读:146  来源: 互联网

标签:ch 14 Recursion 20220612 BinaryNode rchild root 二叉树


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有