Leetcode: Binary Tree inorder Traversal
Given a binary tree, returnInorderTraversal of its nodes 'values.
For example:
Given Binary Tree{1,#,2,3},
1 2 / 3
Return[1,3,2].
Note:Recursive solution is trivial, cocould You Do It iteratively?
Address: https://oj.leetcode.com/problems/binary-tree-inorder-traversal/
Algorithm: Non-recursion is required for central order traversal. Initially, start from the root node and go to the left until each node is added to the stack. In the while loop, take the top element of the stack, go out of the stack, and access the element. If the element has right children, go to the right, go to the left until it is low, and add each node to the stack, so that the loop knows that the stack is empty. Code:
1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */10 class Solution {11 public:12 vector<int> inorderTraversal(TreeNode *root) {13 vector<int> result;14 if(!root) return result;15 TreeNode *p = root;16 stack<TreeNode*> stk;17 while(p){18 stk.push(p);19 p = p->left;20 }21 while(!stk.empty()){22 p = stk.top();23 stk.pop();24 result.push_back(p->val);25 p = p->right;26 while(p){27 stk.push(p);28 p = p->left;29 }30 }31 return result;32 }33 };
Leetcode: Binary Tree inorder Traversal