如何显示当前级别的节点?
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 << 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。)
【讨论】:
以上是关于如何显示当前级别的节点?的主要内容,如果未能解决你的问题,请参考以下文章