我想将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;
}