sách gpt4 ăn đã đi

Giải thích chi tiết cách xây dựng cây nhị phân có thứ tự trước trong C++

In lại Tác giả: qq735679552 Thời gian cập nhật: 28-09-2022 22:32:09 26 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

Bài viết trên blog CFSDN này Giải thích chi tiết về việc xây dựng cây nhị phân đặt hàng trước C++ được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.

Vấn đề xây dựng cây nhị phân trước tiên phải được giải quyết trước khi xem xét việc duyệt cây nhị phân tiếp theo. Đây là việc xây dựng cây nhị phân thông qua thứ tự trước, cũng bao gồm bốn phương pháp duyệt cây nhị phân (thứ tự trước, thứ tự giữa, thứ tự sau). theo thứ tự và từng lớp).

Đầu tiên, định nghĩa lớp BinaryTreeNode.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include
 
#include
 
#include
 
sử dụng không gian tên tiêu chuẩn;
 
 
 
bản mẫu < tên kiểu chữ T > lớp học Cây nhị phân;
 
bản mẫu < tên kiểu chữ T> lớp học Nút cây nhị phân {
 
công cộng :
 
   bạn bè lớp học Cây nhị phân;
 
   Cây nhị phân () {
 
     dữ liệu = NULL;
 
     lChild = rChild = NULL;
 
   }
 
   BinaryTreeNode(T dữ liệu mới) {
 
     cái này ->dữ liệu = dữ liệu mới;
 
     lChild = rChild = NULL;
 
   }
 
   T lấy dữ liệu() {
 
     trở lại dữ liệu;
 
   }
 
   BinaryTreeNode * lấyNút Trái() {
 
     trở lại lTrẻ em;
 
   }
 
   BinaryTreeNode * getRightNode() {
 
     trở lại rTrẻ em;
 
   }
 
   Dữ liệu T;
 
   BinaryTreeNode* lChild;
 
   BinaryTreeNode* rChild;
 
riêng tư :
 
 
 
};

Xem Mã 。

2. Xác định lớp BinaryTree.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
bản mẫu < tên kiểu chữ T> lớp học Cây nhị phân {
 
công cộng :
 
   BinaryTreeNode *gốc;
 
   char * P;
 
   BinaryTree() { gốc = NULL; }
 
   BinaryTree(Dữ liệu T) {
 
     gốc = mới BinaryTreeNode(dữ liệu);
 
     root->lChild = NULL;
 
     root->rChild = NULL;
 
   }
 
   ~Cây nhị phân() {
 
     delete gốc rễ;
 
   }
 
 
 
   //Xây dựng cây nhị phân và trả về
 
   BinaryTreeNode* TạoTree() {
 
     Cây nhị phân< số nguyên >* bt = NULL;
 
     char t;
 
     cin >> t;
 
     nếu như (t == '#' )
 
     {
 
       trở lại VÔ GIÁ TRỊ;
 
     }
 
     khác {
 
       số nguyên số = t - '0' ;
 
       bt = mới BinaryTreeNode(số);
 
       bt->lChild = CreateTree();
 
       bt->rChild = CreateTree();
 
     }
 
     trở lại nhưng;
 
   }
 
 
 
   //Xây dựng cây nhị phân theo thứ tự
 
   BinaryTreeNode* PreCreateTree() {
 
     Cây nhị phân< số nguyên >* bt = NULL;
 
     nếu như ( cái này ->gốc == NULL)
 
     {
 
       đếm << "Vui lòng nhập nút gốc (# đại diện cho cây trống):" ;
 
     }
 
     khác {
 
       đếm << "Vui lòng nhập một nút (# đại diện cho một cây trống):" ;
 
     }
 
     char t;
 
     cin >> t;
 
     nếu như (t == '#' )
 
     {
 
       trở lại VÔ GIÁ TRỊ;
 
     }
 
     khác {
 
       số nguyên số = t - '0' ;
 
       bt = mới BinaryTreeNode(số);
 
       nếu như ( cái này ->gốc == NULL)
 
       {
 
         cái này ->gốc = bt;
 
       }
 
       lệnh << bt->dữ liệu << "Đứa con bên trái" ;
 
       bt->lChild = PreCreateTree();
 
 
 
       lệnh << bt->dữ liệu << "Đứa trẻ bên phải" ;
 
       bt->rChild = PreCreateTree();
 
     }
 
     trở lại nhưng;
 
  
 
 
 
   vô hiệu preOderTraversal(BinaryTreeNode *bt); //Truyền tải đặt hàng trước
 
   vô hiệu inOrderTraversal(BinaryTreeNode *bt); //Truyền theo thứ tự
 
   vô hiệu postOrderTraversal(BinaryTreeNode *bt); //duyệt theo thứ tự sau
 
   vô hiệu levelTraversal(BinaryTreeNode *bt);  //Di chuyển từng lớp
 
 
 
riêng tư :
 
 
 
};
 
 
 
bản mẫu < tên kiểu chữ T>
 
vô hiệu BinaryTree::preOderTraversal(BinaryTreeNode *bt) {
 
   nếu như (bt)
 
   {
 
     lệnh cout << bt->dữ liệu;
 
     BinaryTree::preOderTraversal(bt->getLeftNode());
 
     BinaryTree::preOderTraversal(bt->getRightNode());
 
   }
 
}
 
 
 
bản mẫu < tên kiểu chữ T>
 
vô hiệu BinaryTree::inOrderTraversal(BinaryTreeNode *bt) {
 
   nếu như (bt)
 
   {
 
     BinaryTree::inOrderTraversal(bt->getLeftNode());
 
     lệnh cout << bt->dữ liệu;
 
     BinaryTree::inOrderTraversal(bt->getRightNode());
 
   }
 
}
 
 
 
bản mẫu < tên kiểu chữ T>
 
vô hiệu BinaryTree::postOrderTraversal(BinaryTreeNode *bt) {
 
   nếu như (bt)
 
   {
 
     BinaryTree::postOrderTraversal(bt->getLeftNode());
 
     BinaryTree::postOrderTraversal(bt->getRightNode());
 
     lệnh cout << bt->dữ liệu;
 
   }
 
}
 
 
 
bản mẫu < tên kiểu chữ T>
 
vô hiệu BinaryTree::levelTraversal(BinaryTreeNode *bt) {
 
 
 
   queue<>*> que;
 
   que.push(bt);
 
   trong khi (!que.empty())
 
   {
 
     BinaryTreeNode* proot = que.front();
 
     what.pop();
 
     cout << proot->dữ liệu;
 
 
 
     nếu như (gốc->lChild != NULL)
 
     {
 
       que.push(proot->lChild); //Đứa trẻ bên trái tham gia vào đội
 
     }
 
     nếu như (proot->rChild != NULL)
 
     {
 
       que.push(proot->rChild); //Đứa trẻ phù hợp tham gia vào đội
 
     }
 
   }
 
}

Xem Mã 。

3. Chương trình chính chạy.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "pch.h"
 
#include
 
#include "BinaryTree.h"
 
 
 
số nguyên chủ yếu()
 
{
 
   // Cảnh kiểm tra 2
 
   Cây nhị phân< số nguyên > btree;
 
   btree.PreCreateTree(); //Xây dựng cây nhị phân theo thứ tự
 
   đếm << "Truyền tải đặt hàng trước:" ;
 
   btree.preOderTraversal(btree.root); cout << endl; //Truyền tải đặt hàng trước 
 
   đếm << "Truyền tải theo thứ tự:" ;
 
   btree.inOrderTraversal(btree.root); cout << endl; //Truyền theo thứ tự
 
   đếm << "Truyền tải sau thứ tự:" ;
 
   btree.postOrderTraversal(btree.root); cout << endl; //duyệt theo thứ tự sau
 
   đếm << "Di chuyển theo từng lớp:" ;
 
   btree.levelTraversal(btree.root);
 
 
 
}

Xem Mã 。

Ảnh chụp màn hình của lần chạy thử cuối cùng.

Giải thích chi tiết cách xây dựng cây nhị phân có thứ tự trước trong C++

Cuối cùng, bài viết này về giải thích chi tiết về việc xây dựng cây nhị phân đặt hàng trước C++ kết thúc tại đây. Nếu bạn muốn biết thêm về giải thích chi tiết về việc xây dựng cây nhị phân đặt hàng trước C++, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục. duyệt các bài viết liên quan tôi hy vọng bạn sẽ hỗ trợ nó trong tương lai! .

26 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress