#include <stdio.h>
#include<stdlib.h>
struct node
{
int data;
int emptybit; //empty bit 1 means node is empty
char colour;
struct node* parent;
struct node* left_child;
struct node* right_child;
};
struct node* root_node;
void visit(struct node* x)
{
if(x!=NULL){
visit(x->left_child);
if(x->parent==NULL){
printf("%d %c NIL\n",x
->data
,x
->colour
); }
else{
printf("%d %c %d\n",x
->data
,x
->colour
,x
->parent
->data
); }
visit(x->right_child);
}
return;
}
// pre_fix_tour function will do the the tour of tree
void pre_fix_tour(struct node* x)
{
if(x==NULL)
else
visit(x);
return;
}
int main()
{
int i,n;
int a[100];
struct node RBtree;
for(i=0;i<n;i++){
}
// all the elements to be inserted in the tree are stored in array a
RBtree.data=a[0];
RBtree.emptybit=0;
RBtree.colour= 'R';
RBtree.parent=NULL;
//declaration of RBtree
root_node=&RBtree;
root_node->colour='B';
pre_fix_tour(root_node);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlPHN0ZGxpYi5oPgpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgZGF0YTsKICAgIGludCBlbXB0eWJpdDsgICAgICAgIC8vZW1wdHkgYml0IDEgbWVhbnMgbm9kZSBpcyBlbXB0eQogICAgY2hhciBjb2xvdXI7CiAgICBzdHJ1Y3Qgbm9kZSogcGFyZW50OwogICAgc3RydWN0IG5vZGUqIGxlZnRfY2hpbGQ7CiAgICBzdHJ1Y3Qgbm9kZSogcmlnaHRfY2hpbGQ7Cn07CnN0cnVjdCBub2RlKiByb290X25vZGU7CnZvaWQgdmlzaXQoc3RydWN0IG5vZGUqIHgpCnsKICAgIGlmKHghPU5VTEwpewogICAgICAgIHZpc2l0KHgtPmxlZnRfY2hpbGQpOwogICAgICAgIGlmKHgtPnBhcmVudD09TlVMTCl7CiAgICAgICAgICAgICBwcmludGYoIiVkICVjIE5JTFxuIix4LT5kYXRhLHgtPmNvbG91cik7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgcHJpbnRmKCIlZCAlYyAlZFxuIix4LT5kYXRhLHgtPmNvbG91cix4LT5wYXJlbnQtPmRhdGEpOwogICAgICAgIH0KICAgICAgICB2aXNpdCh4LT5yaWdodF9jaGlsZCk7CiAgICB9CiAgICByZXR1cm47Cn0KLy8gcHJlX2ZpeF90b3VyIGZ1bmN0aW9uIHdpbGwgZG8gdGhlIHRoZSB0b3VyIG9mIHRyZWUKdm9pZCBwcmVfZml4X3RvdXIoc3RydWN0IG5vZGUqIHgpCnsKICAgIGlmKHg9PU5VTEwpCiAgICBwcmludGYoImVtcHR5IHRyZWUiKTsKICAgIGVsc2UgCiAgICB2aXNpdCh4KTsKICAgIHJldHVybjsKfQoKCmludCBtYWluKCkKewogICAgaW50IGksbjsKICAgIGludCBhWzEwMF07CiAgICBzdHJ1Y3Qgbm9kZSBSQnRyZWU7CiAgICBzY2FuZigiJWQiLCZuKTsKICAgIGZvcihpPTA7aTxuO2krKyl7CiAgICAgICAgc2NhbmYoIiVkIiwmYVtpXSk7CiAgICB9CiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRvIGJlIGluc2VydGVkIGluIHRoZSB0cmVlIGFyZSBzdG9yZWQgaW4gYXJyYXkgYQogICAgUkJ0cmVlLmRhdGE9YVswXTsKICAgIFJCdHJlZS5lbXB0eWJpdD0wOwogICAgUkJ0cmVlLmNvbG91cj0gJ1InOwogICAgUkJ0cmVlLnBhcmVudD1OVUxMOwogICAgLy9kZWNsYXJhdGlvbiBvZiBSQnRyZWUKICAgIHJvb3Rfbm9kZT0mUkJ0cmVlOwogICAgcm9vdF9ub2RlLT5jb2xvdXI9J0InOwogICAgIHByZV9maXhfdG91cihyb290X25vZGUpOwogICAgcmV0dXJuIDA7Cn0=