חיפוש מיקום מס' בעץ
יש לי בעיה מוזרה. אני צריך לסדר מספרים בעץ בינארי עד אשר הוזן מס' שלילי. ולחפש האם מס' שהמשתמש הזין נמצא בעץ ואם כן באיזה מיקום. כאשר אני מכניס מספרים בסדר מסוים(רק עולה או רק יורד) הכל בסדר. אבל כאשר אני מכניס מספרים לא בסדר מסוים התוכנית לא עובדת. למשל 2,4,8,1,3 במצב כזה התוכנית מחזירה אינדקס לא נכון. במצב כזה 1,2,5,8,10,12,14 התוכנית מחזירה אינדקס נכון. אני לא יודע אם הבעיה בהכנסת המספרים לעץ או בפונקציית החיפוש.
יש לי בעיה מוזרה. אני צריך לסדר מספרים בעץ בינארי עד אשר הוזן מס' שלילי. ולחפש האם מס' שהמשתמש הזין נמצא בעץ ואם כן באיזה מיקום. כאשר אני מכניס מספרים בסדר מסוים(רק עולה או רק יורד) הכל בסדר. אבל כאשר אני מכניס מספרים לא בסדר מסוים התוכנית לא עובדת. למשל 2,4,8,1,3 במצב כזה התוכנית מחזירה אינדקס לא נכון. במצב כזה 1,2,5,8,10,12,14 התוכנית מחזירה אינדקס נכון. אני לא יודע אם הבעיה בהכנסת המספרים לעץ או בפונקציית החיפוש.
printf("enter nums to build the tree\n"); int num,i=0; do { scanf("%d",&num); if(num>=0) { temp=(Tr*)malloc(sizeof(Tr)); temp->v=num; temp->right=NULL; temp->left=NULL; if(i==0) root= rec_ins(root,temp); else rec_ins(root,temp); i++; } } while(num>=0); printf("enter num to search in the tree\n"); scanf("%d",&num); int ind=rec_find(root,num); if(ind > -1) printf("The num found in the tree at ind %d",ind); else printf("The num not found in the tree"); getchar(); getchar(); } Tr * rec_ins(Tr*t,Tr*temp) { if(t==NULL) return temp; if(temp->v > t->v) t->right=rec_ins(t->right,temp); else t->left=rec_ins(t->left,temp); return t; } int rec_find(Tr*t,int num) { int count; if(t==NULL) return -1; if(num > t->v) { count=rec_find(t->right,num); if(count>-1) return count+1; else return count; } else if(num < t->v) { count=rec_find(t->left,num); if(count>-1) return count+1; else return count; } else return 1; }