一旦你纠正了传递给printInOrder()的参数,你的代码就会有意义并且完美地运行;函数,在你的代码中,你试图传递一个整数类型的值,但参数指定你需要传递类型'Node *'而不是root-> node->数据你传递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; }