将预订遍历转换为Inorder

Converting PreOrder Traversal to Inorder

本文关键字:Inorder 转换 遍历      更新时间:2023-10-16

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