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ễ;
}
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;
}
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);
vô hiệu
inOrderTraversal(BinaryTreeNode *bt);
vô hiệu
postOrderTraversal(BinaryTreeNode *bt);
vô hiệu
levelTraversal(BinaryTreeNode *bt);
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);
}
nếu như
(proot->rChild != NULL)
{
que.push(proot->rChild);
}
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!