• 03-树3 Tree Traversals Again(25 分)


    题目

    链接

    分析

    push是二叉树前序遍历的结果,pop是二叉树中序遍历的结果,所以这个题就是已知前序遍历和中序遍历,求后序遍历。

    AC代码

    #include "bits/stdc++.h"
    using namespace std;
    struct TreeNode
    {
    	int left=-1, right=-1;
    }tree[45];
    vector<int> v;
    void postorder(int x) {
    	if (x == -1) return;
    	postorder(tree[x].left);
    	postorder(tree[x].right);
    	//cout << x << ' ';
    	v.push_back(x);
    }
    
    int main() {
    	int n, i, x, t;
    	cin >> n;
    	string str;
    	stack<int> s;
    	t = 0;
    	bool p = true;
    	for (i = 1; i <= 2*n; i++) {
    		cin >> str;
    		if (str == "Push") {
    			cin >> x;
    			s.push(x);
    			if (p)
    				tree[t].left = x;
    			else
    				tree[t].right = x;
    			t = x;
    			p = true;
    		}
    		else if (str == "Pop") {
    			t = s.top();
    			p = false;
    			s.pop();
    
    		}
    		else {
    			cout << "出错了!";
    			return 0;
    		}
    	}
    	//后序遍历二叉树
    	postorder(0);
    	
    	//输出结果
    	for (i = 0; i < v.size() - 1; i++) {
    		cout << v[i];
    		if (i < v.size() - 2)
    			cout << ' ';
    
    	}
    
    	return 0;
    }
    
    
    转载请保留原文链接及作者
    本文标题:
    文章作者: LepeCoder
    发布时间:
    原始链接:
  • 相关阅读:
    使用setTimeout()代替setInterval()
    音视频入门-02-RGB拼图
    音视频入门-01-认识RGB
    CMake入门-04-自定义编译选项
    CMake入门-03-还是HelloWorld
    CMake入门-02-HelloWorld扩展
    CMake入门-01-从HelloWorld开始
    HTML页面启动sass监听编译成css文件
    安装+配置Express
    安装+配置Nginx
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/7676399.html
Copyright © 2020-2023  润新知