Binary Tree Postorder Traversal Posted on 2018-09-26 Descriptionhttps://leetcode.com/problems/binary-tree-postorder-traversal/description/ Solution123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Node {public: bool l; bool r; TreeNode* treeNode; Node(TreeNode* node) { this->treeNode = node; this->l = false; this->r = false; }};class Solution {public: vector<int> postorderTraversal(TreeNode* root) { vector<int> ret; stack<Node*> s; Node* start = new Node(root); if (root == NULL) return ret; s.push(start); while (s.empty() == false) { Node* currentNode = s.top(); if (currentNode->l == false && currentNode->treeNode->left != NULL) { currentNode->l = true; TreeNode* traverse = currentNode->treeNode->left; while(traverse != NULL) { Node* newNode = new Node(traverse); newNode->l = true; s.push(newNode); traverse = traverse->left; } continue; } if (currentNode->r == true || currentNode->treeNode->right == NULL) { s.pop(); ret.push_back(currentNode->treeNode->val); continue; } //Default case, find the node in the right subtree. currentNode->r = true; s.push(new Node(currentNode->treeNode->right)); } return ret; }};