将预订遍历转换为Inorder
Converting PreOrder Traversal to Inorder
我想将printPreoder函数的数据推入printinOrder函数,作为我对根节点的使用方式。但是,每当我尝试将特定节点推向它,或者在运行后没有显示结果。整个程序是关于将预订遍历转换为Inorder traversal
#include <stdio.h>
#include <iostream>
#include <queue>
using namespace std;
struct Node
{
string data;
Node *left;
Node *right;
Node *none;
Node *noode;
};
struct Node *createnode(string value)
{
Node *newnode = new Node;
newnode->data = value;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
void printLevelOrder(Node *node)
{
if (node == NULL)
{
return;
}
queue <Node *> q;
q.push(node);
while (q.empty() == false)
{
Node *newnode = q.front();
cout << newnode->data << " ";
q.pop();
if (newnode->left != NULL)
{
q.push(newnode->left);
}
if (newnode->right != NULL)
{
q.push(newnode->right);
}
}
}
void printPreOrder(Node *noode)
{
if (noode == NULL)
{
return;
}
cout << noode->data << " ";
printPreOrder(noode->left);
printPreOrder(noode->right);
}
void printInOrder(Node *none)
{
if (none == NULL)
{
return;
}
printInOrder(none->left);
cout << none->data << " ";
printInOrder(none->right);
}
int main()
{
struct Node *root = createnode("3");
root->left = createnode("7");
root->right = createnode("8");
root->left->left = createnode("10");
root->left->right = createnode("12");
cout << "nLevel Order Traversal:n";
printLevelOrder(root);
cout << "nPreOrder Traversal:n";
printPreOrder(root);
cout << "nInOrder Traversal:n";
printInOrder(root->noode->data);
return 0;
}
您的代码很有意义,并且一旦您纠正了您传递到printinorder()的参数,就可以完美地工作。函数,在您的代码中,您正在尝试传递类型整数的值,但是参数指定您需要传递'node*''type'node*',因此而不是root-> node-> data您传递的root,这将完全执行您想要的操作。
#include <stdio.h>
#include <iostream>
#include <queue>
using namespace std;
struct Node
{
string data;
Node *left;
Node *right;
Node *none;
Node *noode;
};
struct Node *createnode(string value)
{
Node *newnode = new Node;
newnode->data = value;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
void printLevelOrder(Node *node)
{
if (node == NULL)
{
return;
}
queue <Node *> q;
q.push(node);
while (q.empty() == false)
{
Node *newnode = q.front();
cout << newnode->data << " ";
q.pop();
if (newnode->left != NULL)
{
q.push(newnode->left);
}
if (newnode->right != NULL)
{
q.push(newnode->right);
}
}
}
void printPreOrder(Node *noode)
{
if (noode == NULL)
{
return;
}
cout << noode->data << " ";
printPreOrder(noode->left);
printPreOrder(noode->right);
}
void printInOrder(Node *none)
{
if (none == NULL)
{
return;
}
printInOrder(none->left);
cout << none->data << " ";
printInOrder(none->right);
}
int main()
{
struct Node *root = createnode("3");
root->left = createnode("7");
root->right = createnode("8");
root->left->left = createnode("10");
root->left->right = createnode("12");
cout << "nLevel Order Traversal:n";
printLevelOrder(root);
cout << "nPreOrder Traversal:n";
printPreOrder(root);
cout << "nInOrder Traversal:n";
printInOrder(root);
return 0;
}
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 将预订遍历转换为Inorder
- 不是表达式转换,而是从预序到Inorder(不是表达式)的转换