二叉树先序遍历
递归法
vector<int> results;
vector<int> inorderTraversal(TreeNode* root) {
traverse(root);
return results;
}
void traverse(TreeNode* node){
if(node==NULL) return;
results.push_back(node->val);
traverse(node->left);
traverse(node->right);
}
迭代法
vector<int> preorderTraversal(TreeNode* root) {
vector<int> ans;
if(root==NULL) return ans;
stack<TreeNode*> s;
s.push(root);
while(!s.empty()){
TreeNode* top=s.top();
s.pop();
ans.emplace_back(top->val);
if(top->right) s.push(top->right);
if(top->left) s.push(top->left);
}
return ans;
}
二叉树中序遍历
递归法
vector<int> results;
vector<int> inorderTrave