#include <bits/stdc++.h> using namespace std; struct node { int data; struct node * left, * right; }; vector < int > postOrderTrav(node * cur) { vector < int > postOrder; if (cur == NULL) return postOrder; stack < node * > st; while (cur != NULL || !st.empty()) { if (cur != NULL) { st.push(cur); cur = cur -> left; } else { node * temp = st.top() -> right; if (temp == NULL) { temp = st.top(); st.pop(); postOrder.push_back(temp -> data); while (!st.empty() && temp == st.top() -> right) { temp = st.top(); st.pop(); postOrder.push_back(temp -> data); } } else cur = temp; } } return postOrder; } struct node * newNode(int data) { struct node * node = (struct node * ) malloc(sizeof(struct node)); node -> data = data; node -> left = NULL; node -> right = NULL; return (node); } int main() { struct node * root = newNode(1); root -> left = newNode(2); root -> right = newNode(3); root -> left -> left = newNode(4); root -> left -> right = newNode(5); root -> left -> right -> left = newNode(8); root -> right -> left = newNode(6); root -> right -> right = newNode(7); root -> right -> right -> left = newNode(9); root -> right -> right -> right = newNode(10); vector < int > postOrder; postOrder = postOrderTrav(root); cout << "The postOrder Traversal is : "; for (int i = 0; i < postOrder.size(); i++) { cout << postOrder[i] << " "; } return 0; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter