2017-03-30 11 views
2

空ノードがあるたびにNULLを表示しながら、バイナリツリーレベルをレベル別に印刷する方法はありますか?空のノードを持つバイナリツリーを出力する

例えば、我々はthis treeを持っているとしましょう:

、出力は次のようになります。

A 
B C 
D NULL E F 

は、どのように私は木と言った出力を生成するコードを書くことについて行けば?前もって感謝します。これは私の最初の投稿です。書式設定と構文が無効な場合は申し訳ありません。

+0

あなたが修正するのに役立つコードは表示されません。私はnullのcoleascing演算子を使用します: 'leaf?.ToString()?? "NULL" ' – BradleyDotNET

答えて

2

ここでは、適用する技術よりも、公開されるアイデアやアルゴリズムの概念が重要です。それは言われている:

struct node { 
    char data; 
    node* left; 
    node* right; 
} 

// Function to print each level in the tree* 
void printByLevel(node* root) { // Copy root node, pass by value. 
    int height = height(root); // Get tree height. Total amount of levels to print. 
    for (int i = 1; i <= h; i++) { 
     printLevel(root, i); 
     std::cout << std::endl; // A line after each level is printed. 
    } 
} 

あなたは以下補助機能が必要になります。これに似た、古典的な二分木構造を仮定し

C++回答(C#に簡単に移植)上記の関数を実行できるようにツリーの高さを計算する機能も備えています。

// Print nodes at ONE specific level 
void printLevel(node* root, int level) { // Copy root node, pass by value. 
    if (root != nullptr) { 
     if (level == 1) 
      std::cout << root->data << ' '; 
     else if (level > 1) { 
      printLevel(root->left, level-1); 
      printLevel(root->right, level-1); 
     } 
    } 
    std::cout << "NULL" << ' '; // No value, print "NULL" 
} 
関連する問題