2017-03-30 281 views
2

有我的方式通過的水平打印二叉樹水平,同時顯示每次有一個空的節點時,一個NULL?打印二叉樹爲空節點

例如,假設我們有this tree

和輸出應該是這樣的:

A 
B C 
D NULL E F 

我應該如何去寫代碼,以產生所述與樹輸出?提前致謝。這是我在此的頭一篇博文。對不起,如果格式和語法關閉。

+0

你不顯示任何代碼,讓我們幫您修改。我只想用空coleascing操作:'葉的ToString()? 「NULL」' – BradleyDotNET

回答

2

的想法和算法的概念暴露更重要的位置,比你運用什麼樣的技術。話雖這麼說:

C++應答(容易移植到C#):

假設一個類似的經典二叉樹結構:

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. 
    } 
} 

您將需要輔助以下功能,以及計算您的樹高度以執行上述功能的功能。

// 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" 
}