#include <stddef.h> // NULL
#include <stdlib.h>
#include <stdio.h>
#define MaxSize 10
typedef struct node {
int data;
struct node* lchild, * rchild;
} TreeNode;
TreeNode *create(int nums[], int n);
void preorder(TreeNode *root);
TreeNode* newNode(int v) {
TreeNode
* node
= (TreeNode
*)malloc(sizeof(TreeNode
)); node->data = v;
node->lchild = node->rchild = NULL;
return node;
}
void insert(TreeNode** root, int x)
{
if (*root == NULL) {
*root = newNode(x);
return;
}
if ((*root)->data < x) {
insert(&(*root)->lchild, x);
}
else {
insert(&(*root)->rchild, x);
}
}
TreeNode *create(int nums[], int n)
{
TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
insert(&root, nums[i]);
}
return root;
}
void preorder(TreeNode* root)
{
if (root == NULL) {
return;
}
preorder(root->lchild);
preorder(root->rchild);
}
int main(int argc, char* argv[])
{
int nums[MaxSize] = { 7, 4, 3, 8, 10, 12, 17, 0, -1, 3 };
TreeNode* root = create(nums, MaxSize);
preorder(root);
return 0;
}
CgoKI2luY2x1ZGUgPHN0ZGRlZi5oPiAgIC8vIE5VTEwKI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2RlZmluZSBNYXhTaXplIDEwCnR5cGVkZWYgc3RydWN0IG5vZGUgewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3Qgbm9kZSogbGNoaWxkLCAqIHJjaGlsZDsKfSBUcmVlTm9kZTsKVHJlZU5vZGUgKmNyZWF0ZShpbnQgbnVtc1tdLCBpbnQgbik7CnZvaWQgcHJlb3JkZXIoVHJlZU5vZGUgKnJvb3QpOwoKClRyZWVOb2RlKiBuZXdOb2RlKGludCB2KSB7CiAgICBUcmVlTm9kZSogbm9kZSA9IChUcmVlTm9kZSopbWFsbG9jKHNpemVvZihUcmVlTm9kZSkpOwogICAgbm9kZS0+ZGF0YSA9IHY7CiAgICBub2RlLT5sY2hpbGQgPSBub2RlLT5yY2hpbGQgPSBOVUxMOwogICAgcmV0dXJuIG5vZGU7Cn0Kdm9pZCBpbnNlcnQoVHJlZU5vZGUqKiByb290LCBpbnQgeCkKewogICAgaWYgKCpyb290ID09IE5VTEwpIHsKICAgICAgICAqcm9vdCA9IG5ld05vZGUoeCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCgqcm9vdCktPmRhdGEgPCB4KSB7CiAgICAgICAgaW5zZXJ0KCYoKnJvb3QpLT5sY2hpbGQsIHgpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaW5zZXJ0KCYoKnJvb3QpLT5yY2hpbGQsIHgpOwogICAgfQp9ClRyZWVOb2RlICpjcmVhdGUoaW50IG51bXNbXSwgaW50IG4pCnsKICAgIFRyZWVOb2RlKiByb290ID0gTlVMTDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW5zZXJ0KCZyb290LCBudW1zW2ldKTsKICAgIH0KICAgIHJldHVybiByb290Owp9CnZvaWQgcHJlb3JkZXIoVHJlZU5vZGUqIHJvb3QpCnsKICAgIGlmIChyb290ID09IE5VTEwpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBwcmludGYoIiVkICIsIHJvb3QtPmRhdGEpOwogICAgcHJlb3JkZXIocm9vdC0+bGNoaWxkKTsKICAgIHByZW9yZGVyKHJvb3QtPnJjaGlsZCk7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKICAgIGludCBudW1zW01heFNpemVdID0geyA3LCA0LCAzLCA4LCAxMCwgMTIsIDE3LCAwLCAtMSwgMyB9OwoKICAgIFRyZWVOb2RlKiByb290ID0gY3JlYXRlKG51bXMsIE1heFNpemUpOwogICAgcHJlb3JkZXIocm9vdCk7CiAgICByZXR1cm4gMDsKfQoK