ช่วยดูวิธีการเดินของ ทรี หน่อยครับ
รู้สึกว่า Inorder จะแสดงมีปัญหาครับ ช่วยเช็คให้หน่อยครับว่าผิดตรงไหน
#include<stdio.h> #include<stdlib.h> #include<conio.h>
typedef struct node { int data; struct node* Left; struct node* Right; }NODE;
node *addNode (NODE *root,int newdata) { NODE* newnode; newnode = (NODE*) malloc (sizeof (NODE)); newnode->data=newdata; newnode->Left=NULL; newnode->Right=NULL; NODE *ptr=root; if(ptr==NULL) return newnode; while(ptr){ if(newdata>ptr->data){ if(ptr->Right==NULL){ ptr->Right=newnode; return root; } ptr=ptr->Right; }else{ if(ptr->Left==NULL){ ptr->Left=newnode; return root; } ptr=ptr->Left; } } } void Preorder(node *root){ if(root){ printf("%d ",root->data); Preorder(root->Left); Preorder(root->Right); } } void Inorder(node *root){ if(root){ Inorder(root->Left); printf("%d ",root->data); Inorder(root->Right); } } void Postorder(node *root){ if(root){ Postorder(root->Left); Postorder(root->Right); printf("%d ",root->data); } } int main() { int newdata,temp; char choice; NODE *root=NULL; do{ system("cls"); printf("##### Binary Search Tree ######\n"); printf("# 1. Insert number #\n"); printf("# 2. Min number #\n"); printf("# 3. Max number #\n"); printf("# 4. Display #\n"); printf("# 0. Exit #\n"); printf("###############################\n"); printf("choice : "); choice=getche(); if(choice=='1'){ printf("\n Enter number : "); scanf("%d",&temp); root=addNode(root,temp); }else if(choice=='4'){ printf("\nPreorder : "); Preorder(root); printf("\nInorder : "); Inorder(root); printf("\nPostorder : "); Postorder(root); printf("\n\n"); system("pause"); } }while(choice!='0'); printf("\n"); system("pause");
}
|