当前位置: 代码迷 >> 综合 >> 【PAT】7-3 Postfix Expression (25)
  详细解决方案

【PAT】7-3 Postfix Expression (25)

热度:10   发布时间:2024-01-29 16:46:03.0

在这里插入图片描述
在这里插入图片描述

  • 俺也不知道对不对,两个给的样例是过了的
  • 没有左结点但有右结点的结点要先输出,这是为什么?
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;struct Node
{string key;int lchild,rchild;bool flag;//设定flag是因为题结点没有左节点,但有右节点时要先输出此结点
}node[30];
int n;
void postOrder(int root)
{if (root < 0 || root> n)return;cout << '(';postOrder(node[root].lchild);if (node[root].lchild == -1 && node[root].rchild != -1) { cout << node[root].key; node[root].flag = 1; }postOrder(node[root].rchild);if(!node[root].flag)cout << node[root].key;cout << ')';
}int main()
{//freopen("input.txt", "r", stdin);bool have[20] = {0};int root;cin >> n;for (int i = 1; i <= n; i++){cin >> node[i].key >> node[i].lchild >> node[i].rchild;//左右孩子未出现过的点为根节点,have数组判断是否存在have[node[i].lchild] = 1;have[node[i].rchild] = 1;node[i].flag = 0;}for (int i = 1; i <=n; i++)if (have[i] == 0){root = i;break;}//根节点postOrder(root);return 0;
}
  相关解决方案