#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int val;
struct node * left;
struct node * right;} node_t;
void insert(node_t * tree,int val);
void print_tree(node_t * current);
void printDFS(node_t * current);
int main() {
node_t
* test_list
= malloc(sizeof(node_t
)); insert(test_list,5);
insert(test_list,8);
insert(test_list,4);
insert(test_list,3);
printDFS(test_list);}
void insert(node_t * tree,int val){
if(tree->val==NULL)tree->val=val;
else if(val<tree->val)
if(tree->left!=NULL)insert(tree->left,val);
else{
tree
->left
=malloc(sizeof(node_t
)); tree->left->val=val; }
else if(val>=tree->val)
if(tree->right!=NULL)insert(tree->right,val);
else{
tree
->right
=malloc(sizeof(node_t
)); tree->right->val=val;} }
void print_tree(node_t * current) {
if(current
!=NULL
)printf("\n%d ",current
->val
); if(current
->left
!=NULL
) printf("L%d ",current
->left
->val
); if(current
->right
!=NULL
)printf(" R%d",current
->right
->val
); if(current->left!=NULL) print_tree(current->left);
if(current->right!=NULL)print_tree(current->right);}
void printDFS(node_t * current) {
if(current->left!=NULL) printDFS(current->left);
if(current
!=NULL
)printf("%d ",current
->val
); if(current->right!=NULL)printDFS(current->right);}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IG5vZGUgewogIGludCB2YWw7CiAgc3RydWN0IG5vZGUgKiBsZWZ0OwogIHN0cnVjdCBub2RlICogcmlnaHQ7fSBub2RlX3Q7Cgp2b2lkIGluc2VydChub2RlX3QgKiB0cmVlLGludCB2YWwpOwp2b2lkIHByaW50X3RyZWUobm9kZV90ICogY3VycmVudCk7CnZvaWQgcHJpbnRERlMobm9kZV90ICogY3VycmVudCk7CgppbnQgbWFpbigpIHsKICBub2RlX3QgKiB0ZXN0X2xpc3QgPSBtYWxsb2Moc2l6ZW9mKG5vZGVfdCkpOwogIGluc2VydCh0ZXN0X2xpc3QsNSk7CiAgaW5zZXJ0KHRlc3RfbGlzdCw4KTsKICBpbnNlcnQodGVzdF9saXN0LDQpOwogIGluc2VydCh0ZXN0X2xpc3QsMyk7CiAgcHJpbnRERlModGVzdF9saXN0KTt9Cgp2b2lkIGluc2VydChub2RlX3QgKiB0cmVlLGludCB2YWwpewogIGlmKHRyZWUtPnZhbD09TlVMTCl0cmVlLT52YWw9dmFsOwogIGVsc2UgaWYodmFsPHRyZWUtPnZhbCkKICAgIGlmKHRyZWUtPmxlZnQhPU5VTEwpaW5zZXJ0KHRyZWUtPmxlZnQsdmFsKTsKICAgIGVsc2V7CiAgICAgIHRyZWUtPmxlZnQ9bWFsbG9jKHNpemVvZihub2RlX3QpKTsKICAgICAgdHJlZS0+bGVmdC0+dmFsPXZhbDsgICAgfQogIGVsc2UgaWYodmFsPj10cmVlLT52YWwpCiAgICBpZih0cmVlLT5yaWdodCE9TlVMTClpbnNlcnQodHJlZS0+cmlnaHQsdmFsKTsKICAgIGVsc2V7CiAgICAgIHRyZWUtPnJpZ2h0PW1hbGxvYyhzaXplb2Yobm9kZV90KSk7CiAgICAgIHRyZWUtPnJpZ2h0LT52YWw9dmFsO30gICAgfQoKdm9pZCBwcmludF90cmVlKG5vZGVfdCAqIGN1cnJlbnQpIHsKICBpZihjdXJyZW50IT1OVUxMKXByaW50ZigiXG4lZCAiLGN1cnJlbnQtPnZhbCk7CiAgaWYoY3VycmVudC0+bGVmdCE9TlVMTCkgcHJpbnRmKCJMJWQgIixjdXJyZW50LT5sZWZ0LT52YWwpOwogIGlmKGN1cnJlbnQtPnJpZ2h0IT1OVUxMKXByaW50ZigiIFIlZCIsY3VycmVudC0+cmlnaHQtPnZhbCk7CiAgaWYoY3VycmVudC0+bGVmdCE9TlVMTCkgcHJpbnRfdHJlZShjdXJyZW50LT5sZWZ0KTsKICBpZihjdXJyZW50LT5yaWdodCE9TlVMTClwcmludF90cmVlKGN1cnJlbnQtPnJpZ2h0KTt9Cgp2b2lkIHByaW50REZTKG5vZGVfdCAqIGN1cnJlbnQpIHsKICBpZihjdXJyZW50LT5sZWZ0IT1OVUxMKSBwcmludERGUyhjdXJyZW50LT5sZWZ0KTsKICBpZihjdXJyZW50IT1OVUxMKXByaW50ZigiJWQgIixjdXJyZW50LT52YWwpOwogIGlmKGN1cnJlbnQtPnJpZ2h0IT1OVUxMKXByaW50REZTKGN1cnJlbnQtPnJpZ2h0KTt9