2017-03-30 283 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" 
}