C/C++の宿題片付けます 143代目
■ このスレッドは過去ログ倉庫に格納されています
0893デフォルトの名無しさん
2010/12/02(木) 21:06:16struct node { int val; struct node* left; struct node* right; };
struct node* create_node(int num) {
struct node* node = malloc(sizeof(struct node));
node->left = node->right = NULL; node->val = num;
return node;
}
void disp(struct node* p) {
if(p != NULL){ printf("%d ", p->val); if(p->left != NULL){ disp(p->left); } if(p->right != NULL){ disp(p->right); } }
}
void add_node(struct node** root, struct node** add_node) {
struct node* search_node = *root;
if((*add_node)->val < (*root)->val){
*root = *add_node; (*root)->left = search_node;
}
else{
while((search_node->right != NULL) && (search_node->right->val < (*add_node)->val)){ search_node = search_node->right; }
while((search_node->left != NULL) && (search_node->left->val < (*add_node)->val)){ search_node = search_node->left; }
(*add_node)->left = search_node->left; (*add_node)->right = search_node->right; search_node->left = *add_node;
}
}
int main(void) {
struct node* root = NULL; struct node* node; int num;
printf("input data:"); scanf("%d", &num);
while(0 < num){
node = create_node(num);
if(root == NULL){ root = node; }
else{ add_node(&root, &node); }
printf("input data:"); scanf("%d", &num);
} printf("result:"); disp(root); puts("");
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています