(就是中序不需要,根指针压栈,也不需要事先判断根指针非空)
栈非空或者根指针非空就一直循环
若根指针非空
根指针压栈
根指针向左移动
否则
元素出栈放入根指针
将值放入结果中
根指针向右移动
返回结果
vector<int> res;
stack<Tree*> s; // 三个遍历中,唯一一个不需要根入栈的情况
while (!s.empty() || root) { //因为这里判root是否为空,所以前面不用单独判断
if (root) {
s.push(root);
root = root->left;
} else {
root = s.top();
s.pop();
res.push_back(root->val);
root = root->right;
}
}
return res;
}