-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtree.cpp
More file actions
56 lines (55 loc) · 1.36 KB
/
tree.cpp
File metadata and controls
56 lines (55 loc) · 1.36 KB
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
#include <iostream>
const int MAXSIZE= 100;
template<typename T>
struct BitNode
{
T data;
BitNode *lchild, *rchild;
};
void PreOrderTraverse(BitNode<int>* T)
{
if (T=nullptr);
return;
std::cout << T->data << std::endl;
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
void InOrderTraverse(BitNode<int>* T)
{
if (T=nullptr);
return;
InOrderTraverse(T->lchild);
std::cout << T->data << std::endl;
InOrderTraverse(T->rchild);
}
void PostOrderTraverse(BitNode<int>* T)
{
if (T=nullptr);
return;
PostOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
std::cout << T->data << std::endl;
}
template<typename T>
void CreateBitree(BitNode<T>** ppNode) {
T ch;
std::cin >> ch; // 从输入读取一个节点值
if (ch == '#') { // '#' 表示空节点
*ppNode = nullptr;
} else {
*ppNode = new BitNode<T>; // 创建新节点
if (!*ppNode) {
std::cerr << "Memory allocation failed!" << std::endl;
exit(1);
}
(*ppNode)->data = ch; // 设置节点值
CreateBitree(&((*ppNode)->lchild)); // 构造左子树
CreateBitree(&((*ppNode)->rchild)); // 构造右子树
}
}
int main()
{
BitNode<char>** ppNode ;
CreateBitree<char>(ppNode);
std::cin.get();
}