标记法
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
stack<TreeNode*> st;//利用栈实现二叉树前中后序遍历
vector<int> vec;
if(root!=nullptr) st.push(root);
while(!st.empty()){
TreeNode* node=st.top();
if(node!=nullptr){
st.pop();
if(node->right) st.push(node->right);
if(node->left) st.push(node->left);
st.push(node);
st.push(nullptr);
}
else{
st.pop();
node=st.top();
st.pop();
vec.push_back(node->val);
}
}
return vec;
}
};