打印带空节点的二叉树

时间:2017-03-30 00:04:18

标签: c# c++

每次有空节点时,我是否有办法按级别打印二进制树,同时显示NULL?

例如,我们说this tree

输出应如下所示:

A
B C
D NULL E F

我应该如何编写代码以使用树生成所述输出?提前致谢。这是我在此的头一篇博文。很抱歉,如果格式和语法已关闭。

1 个答案:

答案 0 :(得分: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"
}