把这个顺序储存变成链式储存再进行后序遍历(先左子树,然后右子树,再根节点)
前中后遍历介绍
由于不知道是几叉树,所以交给万能的STL了就不自己搞链树了
#include<bits\stdc++.h> using namespace std; int Count = 0; void Postorder(int n, vector<int>* tree) { for(int i = 0; i < tree[n].size(); i++) { Postorder(tree[n][i], tree); } cout << (Count++ ? " " : "") << n; } int main() { int n; cin >> n; vector<int> tree[10000]; for(int i = 0; i < n; i++) { int parent; cin >> parent; if(parent != -1) tree[parent].push_back(i);//转化成链式树 } Postorder(0, tree); }