https://leetcode.com/problems/binary-tree-inorder-traversal/description/
Solution 1. Recursion.
void inOrder(TreeNode*node, vector<int>& res) {
if(!node) return;
inOrder(node->left, res);
res.push_back(node->val);
inOrder(node->right, res);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
inOrder(root, res);
return res;
}
Solution 2. Iteration
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> st;
TreeNode* node = root;
while(!st.empty() || node) {
if(node) {
st.push(node);
node = node->left;
}
else {
node = st.top();
st.pop();
res.push_back(node->val);
node = node->right;
}
}
return res;
}
No comments:
Post a Comment