如何显示当前级别的节点?

Posted

技术标签:

【中文标题】如何显示当前级别的节点?【英文标题】:How to display nodes of current level? 【发布时间】:2020-04-06 15:17:52 【问题描述】:

根据输入的实数序列构建二叉搜索树。展示 具有用户指定级别的节点中的值。 想不通找值的原理和算法是什么。 如何为这样的算法编写函数


#include <iostream>

using namespace std;

struct Node


  int data;
  Node *left;
  Node *right;
;
Node *root = NULL;

void InsertNode(int x, Node *leaf)

  Node *new_node = new Node;
  new_node->data = x;
  new_node->left = NULL;
  new_node->right = NULL;
  if (leaf == NULL)
    root = new_node;
  else

      if (x < leaf->data)

    if (leaf->left != NULL)

      InsertNode(x, leaf->left);

    else

      leaf->left = new_node;

  else

      if (x >= leaf->data)

    if (leaf->right != NULL)

      InsertNode(x, leaf->right);

    else

      leaf->right = new_node;




int main()


  int x, n = 0;
  cout << "Enter 10 numbers" << endl;
  for (int i = 0; i < 10; i++)
  

    cin >> x;
    InsertNode(x, root);
  


  system("pause");
  return 0;

如何根据我的结构显示当前级别的节点

struct Node


  int data;
  Node *left;
  Node *right;
;
Node *root = NULL;

【问题讨论】:

对关卡使用计数器。达到给定级别时打印节点。我建议使用递归方法,例如 void print(Node *node, int level, int currentLevel = 0) if (currentLevel == level) cout &lt;&lt; data; return; print(left, level, currentLevel + 1;print(right, level, currentLevel + 1; 【参考方案1】:

这样的事情怎么样

void print_level(Node *root, int level)

  if (! level)
    cout << root->data;
  else
  
    print_level(root->left, level - 1);
    print_level(root->right, level - 1);
  

然后调用函数

print_level(root, 3);

这将打印深度为 3 的所有节点。(假设根节点位于级别 0。)

【讨论】:

以上是关于如何显示当前级别的节点?的主要内容,如果未能解决你的问题,请参考以下文章

C++ Builder中如何让窗体一直显示最前,焦点不失去,就是点不了别的窗体,切换不了窗体,总处在被激活状态

当用户触摸注释时,无法识别的选择器崩溃

创建一个玩家经验大于等级表所需经验的视图

高德地图marker的label被别的marker遮挡

当核心数据中找不到相关实体时,无法识别的选择器发送到实例

工头只显示“以 pid # 开头”的行,没有别的