peekneek
دوشنبه 27 اردیبهشت 1389, 00:02 صبح
با سلام خدمت تمام دوستانی که عاشق برنامه نویسی هستند.
من یک برنامه برای نمایش درخت دودویی با استفاده از پیمایشهایی که در عنوان ذکر کردم نوشتم اما تنها مشکلی که این برنامه داره اینه که فقط با درخت دودویی پر کار میکنه. یعنی فرق نمی کنه که چند تا سطح داره فقط باید پر باشه تا خروجی بده. لذا از دوستان عزیز تقاضا می کنم که اگر می تونن یه راهنمایی برای رفع مشکل این برنامه به من بدن ممنون میشم. اینم کدی که نوشتم:
#include <iostream.h>
#include <conio.h>
#include <STRING.H>
char in[17]={'0','h','d','i','b','j','e','k','a','l','f','m', 'c','n','g','o'};
char pre[17]={'0','a','b','d','h','i','e','j','k','c','f','l', 'm','g','n','o'};
char t[17]={'0'};
int n=1,m,s1,s2,s3,j=1,f=0,k=1;
int main(){
clrscr();
t[1]=pre[1];
m=(strlen(in))-1;
while(pre[1] != in[j])
j++;
s2=j;
for (int i=2;i<=m;i++){
j=1;
while(pre[i] != in[j])
j++;
s3=j;
if (s3<s2){
n=n*2;
t[n]=in[s3];
s2=s3;
}
else{
f=f+1;
if ((f%2)!=0){
n=n/2;
t[n*2+1]=in[s3];
}
else if ((f%4)==0){
n=n/4;
n=n*2+1;
t[n]=in[s3];
}
else{
n=n/2;
n=n*2+1;
t[n]=in[s3];
}
s2=s3;
}
}
cout<<"preorder is: "<<pre<<'\n';
cout<<"inorder is: "<<in<<'\n';
cout<<"the tree is: "<<t<<'\n';
getch();
return 0;
}
من یک برنامه برای نمایش درخت دودویی با استفاده از پیمایشهایی که در عنوان ذکر کردم نوشتم اما تنها مشکلی که این برنامه داره اینه که فقط با درخت دودویی پر کار میکنه. یعنی فرق نمی کنه که چند تا سطح داره فقط باید پر باشه تا خروجی بده. لذا از دوستان عزیز تقاضا می کنم که اگر می تونن یه راهنمایی برای رفع مشکل این برنامه به من بدن ممنون میشم. اینم کدی که نوشتم:
#include <iostream.h>
#include <conio.h>
#include <STRING.H>
char in[17]={'0','h','d','i','b','j','e','k','a','l','f','m', 'c','n','g','o'};
char pre[17]={'0','a','b','d','h','i','e','j','k','c','f','l', 'm','g','n','o'};
char t[17]={'0'};
int n=1,m,s1,s2,s3,j=1,f=0,k=1;
int main(){
clrscr();
t[1]=pre[1];
m=(strlen(in))-1;
while(pre[1] != in[j])
j++;
s2=j;
for (int i=2;i<=m;i++){
j=1;
while(pre[i] != in[j])
j++;
s3=j;
if (s3<s2){
n=n*2;
t[n]=in[s3];
s2=s3;
}
else{
f=f+1;
if ((f%2)!=0){
n=n/2;
t[n*2+1]=in[s3];
}
else if ((f%4)==0){
n=n/4;
n=n*2+1;
t[n]=in[s3];
}
else{
n=n/2;
n=n*2+1;
t[n]=in[s3];
}
s2=s3;
}
}
cout<<"preorder is: "<<pre<<'\n';
cout<<"inorder is: "<<in<<'\n';
cout<<"the tree is: "<<t<<'\n';
getch();
return 0;
}