方法一:
递归调用
方法二:
迭代实现
c++:
// ref: https://hit-alibaba.github.io/interview/basic/algo/Tree.html
vector<int> inorderTraversal(TreeNode* root) {
TreeNode *p = root;
vector<int> result;
if (!p) {
return result;
}
stack<TreeNode *> q;
while (p || !q.empty()) {
if (p) {
q.push(p);
p = p->left;
}
else {
p = q.top();
result.push_back(p->val);
q.pop();
p = p->right;
}
}
return result;
}