题源:leetcode
题目:给定一棵二叉树的头节点,以vector<int>的形式返回中序遍历的结果(C++)
用语言讲述代码实现过程:
C++代码:
//Iterative solution using stack — O(n) time and O(n) space;
vector<int> inorderTraversal(TreeNode* root) {
vector<int> nodes;
stack<TreeNode*> toVisit;
TreeNode* curNode = root;
while (curNode || !toVisit.empty()) {
if (curNode) {
toVisit.push(curNode);
curNode = curNode -> left;
}
else {
curNode = toVisit.top();
toVisit.pop();
nodes.push_back(curNode -> val);
curNode = curNode -> right;
}
}
return nodes;
}