>>64
int main(void){
struct tnode *root=NULL;
int i, nums[]={78, 85, 79, 98, 87, 90, 95, 99, 97, 92};
for(i=0;i<sizeof(nums)/sizeof(nums[0]);i++) root=insertNode(root, nums[i]);
printTree(root);
return 0;
}
struct tnode *createNode (int num){
struct tnode *ret;
ret=malloc(sizeof(*ret));
ret->n=num;
ret->left=ret->right=NULL;
return ret;
}
struct tnode *insertNode (struct tnode *node, int num){
struct tnode **parent=NULL, *root;
for(root=node;node;node=*parent){
if(num>node->n) parent=&(node->left);
else parent=&(node->right);
}
if(parent==NULL) return createNode(num);
*parent=createNode(num);
return root;
}
void printTree (struct tnode *node){
if(node==NULL) return;
printTree(node->left);
printf("n = %d [%p] -> [%p, %p]\n", node->n, node, node->left, node->right);
printTree(node->right);
}