#include "node.h"
#include
using namespace std;
class BTree {
node* root;
int size;
node* create_node(int num, node* parent) {
node* n = (node*) malloc( sizeof(node) );
n->element = num;
n->parent = parent;
n->right = NULL;
n->left = NULL;
return n;
}
public:
BTree() {
root = NULL;
size = 0;
}
node* left(node* p) {
return p->left;
}
node* right(node* p) {
return p->right;
}
node* sibling(node* p){
if(p != root){
node* P = p->parent;
if(P->left != NULL && P->right != NULL){
if(P->left->element == p->element){
return P->right;
}
if(P->right->element == p->element){
return P->left;
}
}
}
return NULL;
}
node* addRoot(int e) {
if(size != 0){
cout<><>
return NULL;
}
root = create_node(e,NULL);
size++;
return root;
}
node* addLeft(node* p, int e) {
if(p->left == NULL){
node* newLeft = create_node(e,NULL);
newLeft->parent = p;
p->left = newLeft;
size++;
return p->left;
}
cout <><>
return NULL;
}
node* addRight(node* p, int e) {
if(p->right == NULL){
node* newRight = create_node(e,NULL);
newRight->parent = p;
p->right = newRight;
size++;
return p->right;
}
cout <><>
return NULL;
}
int _size() {
return size;
}
bool isEmpty() {
return (size==0);
}
int childCount(node* p) {
return 0;
}
int set(node* p, int e) {
return 0;
}
node* addSibling(node* p, int e) {
return NULL;
}
void clear(){
}
void attach(node* p, BTree* t1, BTree* t2) {
}
int remove(node* p) {
return 0;
}
// WARNING. Do not modify this method.
// Doing so will nullify your score for this activity.
void print() {
if (isEmpty()) {
cout <>
return;
}
print_inorder(root);
cout <><><>
}
// WARNING. Do not modify this method.
// Doing so will nullify your score for this activity.
void print_inorder(node* curr) {
if (curr->left != NULL) {
print_inorder(curr->left);
}
cout < curr->element <> curr->
if (curr->right != NULL) {
print_inorder(curr->right);
}
}
// WARNING. Do not modify this method.
// Doing so will nullify your score for this activity.
bool check_health(node* curr, node* parent) {
bool health = curr->parent == parent;
if (curr->left != NULL) {
health &= check_health(curr->left, curr);
}
if (curr->right != NULL) {
health &= check_health(curr->right, curr);
}
return health;
}
};