-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path2022-06-02.cpp
More file actions
87 lines (76 loc) · 1.87 KB
/
2022-06-02.cpp
File metadata and controls
87 lines (76 loc) · 1.87 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
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
#include <iostream>
using namespace std;
struct BTreeNode
{
int data;
struct BTreeNode* left;
struct BTreeNode* right;
};
BTreeNode* MakeBTreeNode(void);
void DeleteBTreeNode(BTreeNode* bt);
int GetData(BTreeNode* bt);
void SetData(BTreeNode* bt, int data);
BTreeNode* GetLeftSubTree(BTreeNode* bt);
BTreeNode* GetRightSubTree(BTreeNode* bt);
void MakeLeftSubTree(BTreeNode* main, BTreeNode* sub);
void MakeRightSubTree(BTreeNode* main, BTreeNode* sub);
BTreeNode* MakeBTreeNode(void)
{
//make binary tree
//initialize
//return pointer
BTreeNode* bt = (BTreeNode*)malloc(sizeof(BTreeNode));
bt->left = nullptr;
bt->right = nullptr;
return bt;
}
void DeleteBTreeNode(BTreeNode* bt) {
free(bt);
}
int GetData(BTreeNode* bt) {
return bt->data;
}
void SetData(BTreeNode* bt, int data) {
bt->data = data;
}
BTreeNode* GetLeftSubTree(BTreeNode* bt) {
return bt->left;
}
BTreeNode* GetRightSubTree(BTreeNode* bt) {
return bt->right;
}
void MakeLeftSubTree(BTreeNode* main, BTreeNode* sub) {
// if there is a node in left link, delete it
// put sub in left link of main
if(main->left != nullptr) {
DeleteBTreeNode(main->left);
}
main->left = sub;
}
void MakeRightSubTree(BTreeNode* main, BTreeNode* sub) {
// if there is a node in right link, delete it
// put sub in right link of main
if(main->right != nullptr) {
DeleteBTreeNode(main->right);
}
main->right = sub;
}
int main() {
BTreeNode* bt1 = MakeBTreeNode();
BTreeNode* bt2 = MakeBTreeNode();
BTreeNode* bt3 = MakeBTreeNode();
BTreeNode* bt4 = MakeBTreeNode();
SetData(bt1, 1);
SetData(bt2, 2);
SetData(bt3, 3);
SetData(bt4, 4);
MakeLeftSubTree(bt1, bt2);
MakeRightSubTree(bt1, bt3);
MakeLeftSubTree(bt2, bt4);
cout << GetData(GetLeftSubTree(bt1)) << endl;
cout << GetData(GetLeftSubTree(GetLeftSubTree(bt1))) << endl;
DeleteBTreeNode(bt1);
DeleteBTreeNode(bt2);
DeleteBTreeNode(bt3);
DeleteBTreeNode(bt4);
}