#include <stdio.h>
typedef struct node {
int value;
struct node* left;
struct node* right;
} node_t;
node_t create_node(int value, node_t* left, node_t* right) {
node_t node;
node.value = value;
node.left = left;
node.right = right;
return node;
}
node_t create_leaf(int value) {
return create_node(value, NULL, NULL);
}
int main(void) {
/* Create the following tree:
1
/ \
2 3 */
node_t left = create_leaf(2);
node_t right = create_leaf(3);
node_t root = create_node(1, &left, &right);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHN0cnVjdCBub2RlIHsKCWludCB2YWx1ZTsKCXN0cnVjdCBub2RlKiBsZWZ0OwoJc3RydWN0IG5vZGUqIHJpZ2h0Owp9IG5vZGVfdDsKCm5vZGVfdCBjcmVhdGVfbm9kZShpbnQgdmFsdWUsIG5vZGVfdCogbGVmdCwgbm9kZV90KiByaWdodCkgewoJbm9kZV90IG5vZGU7Cglub2RlLnZhbHVlID0gdmFsdWU7Cglub2RlLmxlZnQgPSBsZWZ0OwoJbm9kZS5yaWdodCA9IHJpZ2h0OwoJcmV0dXJuIG5vZGU7Cn0KCm5vZGVfdCBjcmVhdGVfbGVhZihpbnQgdmFsdWUpIHsKCXJldHVybiBjcmVhdGVfbm9kZSh2YWx1ZSwgTlVMTCwgTlVMTCk7Cn0KCmludCBtYWluKHZvaWQpIHsKCS8qIENyZWF0ZSB0aGUgZm9sbG93aW5nIHRyZWU6CgkgICAgICAgIDEKCSAgICAgICAvIFwKCSAgICAgIDIgICAzICovCglub2RlX3QgbGVmdCA9IGNyZWF0ZV9sZWFmKDIpOwoJbm9kZV90IHJpZ2h0ID0gY3JlYXRlX2xlYWYoMyk7Cglub2RlX3Qgcm9vdCA9IGNyZWF0ZV9ub2RlKDEsICZsZWZ0LCAmcmlnaHQpOwoJcmV0dXJuIDA7Cn0K