将二叉树排序为已排序的数组

时间:2015-01-01 11:13:22

标签: c++ arrays binary-tree binary-search-tree

我的代码有问题,请帮忙吗?:D

完整代码:

#include <iostream>

using namespace std;  
int a[100],k;  
struct nod  
            {  
             int info;  
             nod *st,*dr;  
            } *rad,*p;  


void adaug(nod *&rad, int x)  
{  
    if(!rad)  
            {  
             nod *p = new nod;  
             p -> info = x;  
             p -> st = 0;  
             p -> dr = 0;  
             rad = p;  
            }  
        else if(x < rad -> info)    adaug(rad->st,x);  
                  else              adaug(rad->dr,x);  
}  

void SRD(nod *rad,int &k)  
{  
    if(rad)  
            {  
             SRD(rad -> st,k);  
             a[k] = rad -> info;  
             k++;  
             SRD(rad -> dr,k);  
            }  
}  


int main()  
{  
    nod *rad = NULL;  
    int n,x,i;  
    cout << "n="; cin >> n;  
    for(i = 1; i <= n; i++)  
    {  
        cin >> x;  
        adaug(rad,x);  
    }  

SRD(rad,k);

while (a[k]){  
             cout << a[k] << " ";  
             k++;  
             }  
cout << endl << k;  
    return 0;  
}  

SRD是左,右,右交叉,adaugare是插入功能。所以,如果我选择cout&lt;&lt; rad - &gt;信息&lt;&lt; &#34; &#34 ;;在SRD函数中它可以工作但是数组不会:(。 我认为这个问题出现在SRD功能中,所以有什么帮助吗?(它打印时只打印7个,它应该在二进制树中打印2 3 4 6 7 8,如下所示:       6(根)     3 8   2 4 7 9

1 个答案:

答案 0 :(得分:0)

这样做......

for(i = 0; i < k; i++)
 cout<<a[i]<<" ";

或者像这样

i=0;
while(i<k)
{
    cout<<a[i]<<" ";
    i++;
}

代码中的问题是

  

而(A [k]的)