我想将printPreOder函数的数据作为参数推送到printInOrder函数中,就像我对根节点所做的那样。但是,每当我尝试将特定节点推送到它的时候,它都会抛出一个错误,或者在我运行之后没有显示任何结果。整个程序都是关于将PreOrder遍历转换为InOrder遍历
#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;
}发布于 2019-03-13 16:58:35
一旦你纠正了传递给printInOrder();函数的参数,你的代码就能正常工作。在你的代码中,你试图传递一个整型的值,但是参数指定你需要传递类型'Node*‘,所以你传递的不是根->节点->数据,而是根->节点->数据,这将会做你想要的事情。
#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;
}https://stackoverflow.com/questions/55137086
复制相似问题