二叉树的建立及递归遍历
1. #include<stdio.h>
2. #include<malloc.h>
3. #include<iostream>
4.
5. //定义节点
6. typedef struct BiNode{
7. char data;
8. struct BiNode *lch;
9. struct BiNode *rch;
10. }BiNode,*BiTree;
11.
12. //先序拓展序列建立二叉树
13. void Create(BiTree &T)
14. {
15. T =(BiNode*) malloc (sizeof(BiNode));
16.
17. printf("Enter the data \n");
18. scanf(" %c",&T->data);
19. if(T->data=='#') T = NULL;
20. if(T){
21. printf("");
22. Create(T->lch);
23. Create(T->rch);
24. }
25. }
26.
27. //先序遍历 (递归)
28. void Preorder (BiTree T)
29. {
30. if (T) {
31. printf(" %c",T->data); // 访问根结点
32.
33. Preorder(T->lch); // 遍历左子树
34. Preorder(T->rch);// 遍历右子树
35. }
36. }
37.
38. //中序遍历 (递归)
39. void Inorder (BiTree T)
40. {
41. if(T) {
42. Inorder(T->lch);
43.
44. printf(" %c",T->data);
45.
46. Inorder(T->rch);
47. }
48. }
49.
50. //后序遍历 (递归)
51. void Postorder (BiTree T)
52. {
53. if(T) {
54. Postorder(T->lch);
55. Postorder(T->rch);
56.
57. printf(" %c",T->data);
58. }
59. }
60.
61. int main()
62. {
63. //建树
64. printf("The fuction Create() is called.\n");
65. BiTree T;
66. Create(T);
67.
68. //三种遍历递归算法
69. printf("\n");
70. printf("The fuction Preorder() is called.\n");
71. Preorder(T);
72.
73. printf("\n");
74. printf("The fuction Inorder() is called.\n");
75. Inorder(T);
76.
77. printf("\n");
78. printf("The fuction Postorder() is called.\n");
79. Postorder(T);
80.
81.
82. printf("\n");
83. system("pause");
84.
85. }
作者 w174504744
补充:软件开发 , Vc ,