Question: Using C++, add comments to explain the following code: #include #include #include #include using namespace std; int flag; class Tree { public: Tree() { root
Using C++, add comments to explain the following code:
#include
int flag; class Tree { public: Tree() { root = 0; int j, k; for (j = 0; j < 20; j++) for (k = 0; k < 4; k++) node[j][k] = -1; } int insert(int n) { int f = root, index = 0; while (node[index][0] != -1) index++; if (index >= 20) return -1; if (node[root][0] == -1) { node[root][0] = 1; node[root][1] = n; return 1; } else { node[index][0] = 1; node[index][1] = n; while (1) { if (node[f][1] < n) { if (node[f][3] == -1) { node[f][3] = index; return 1; } else { f = node[f][3]; } } else { if (node[f][2] == -1) { node[f][2] = index; return 1; } else { f = node[f][2]; } } } } } void inorder() { flag = 0; inorder(root); } void inorder(int idx) { if (node[idx][2] != -1) inorder(node[idx][2]); if (flag == 1) cout << ","; cout << node[idx][1]; flag = 1; if (node[idx][3] != -1) inorder(node[idx][3]); } void preorder() { flag = 0; preorder(root); } void preorder(int idx) { if (flag == 1) cout << ","; cout << node[idx][1]; flag = 1; if (node[idx][2] != -1) preorder(node[idx][2]); if (node[idx][3] != -1) preorder(node[idx][3]); } void postorder() { flag = 0; postorder(root); } void postorder(int idx) { if (node[idx][2] != -1) postorder(node[idx][2]); if (node[idx][3] != -1) postorder(node[idx][3]); if (flag == 1) cout << ","; cout << node[idx][1]; flag = 1; } void levelorder() { flag = 0; queue
private: int node[20][4]; // node[idx][0] : exist, [1] : data, [2] : left node, [3] : node. int root; };
int main() { Tree *tree = new Tree(); int j, node; srand(time(NULL)); for (j = 0; j < 10; j++) { node = rand() % 10; tree->insert(node); } tree->inorder(); printf(" "); tree->preorder(); printf(" "); tree->postorder(); printf(" "); tree->levelorder(); printf(" "); }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
