2017-02-07 3 views
-2

以下のコードを使って順番にツリーをトラバースできます。しかし、この関数から順序通りのトラバースを返す場合、どうすればいいのですか?C関数から配列としてツリートラバーサルを返すにはどうすればいいですか

void inorder(Node* root){ 
    if(root==NULL){ 
     return; 
    } 
    inorder(root->left); 
    printf("%d\n",root->data); 
    inorder(root->right); 
} 
+0

での私の最初の答えです'Node *'の配列が必要ですか? –

+0

'array'と実際のアイテム' id'が0から始まる構造体へのポインタを引数として渡すことができます。この方法で、配列を更新してIDをインクリメントすることができます: 'arr [id ++] = root-> data' 。配列に十分な大きさがあることを確認してください(例:ツリーサイズに基づいて割り当てます。 – pbn

+0

@pbnもう少しお手伝いします:) –

答えて

-1
void inorder(Node* root,int str[]) 
{ 
    static int i=0; 
    if(root==Null){ 
     return; 
    } 
    inorder(root->left,str); 
    str[i++] = root->data; 
    inorder(root->right,str); 
    str[i] = SOME_SENTINEL_VALUE 
} 
int * inorder_temp(Node *root) 
{ 
    int *str=(int*)malloc(MAX_SIZE_OF_TREE*sizeof(int)); 
    inorder(root,str); 
    return str; 
} 

私は 編集)、これはあなたがINORDERの場所(中asking.Call inorder_temp()されているものです願っています:properly.Thisをインデントないため申し訳ありませんが、あなたがそうstackoverflowの

+0

少なくともインデントされたコードを提出してください。インデントしない場合は-1です。私はdownvoteがインデントされたら削除します。そして、この答えはややシンプルです。 –

関連する問題