145. 二叉树的后序遍历
题目描述
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
解题思路
- 与先序遍历采取完全相反的策略
复杂度分析
时间复杂度:O(N)
空间复杂度:O(N)
知识点
二叉树,后序遍历
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/class Solution {public:vector<int> postorderTraversal(TreeNode* root) {if (!root) {return {};}vector<int> res;stack<TreeNode*> s1, s2;s1.push(root);while (!s1.empty()) {TreeNode* node = s1.top();s1.pop();s2.push(node);// 此时的打印顺序为中-右-左if (node->left) {s1.push(node->left);}if (node->right) {s1.push(node->right);}}// 颠倒后的打印顺序为左-右-中while (!s2.empty()) {TreeNode* node = s2.top();s2.pop();res.push_back(node->val);}return res;}};
