递归版:
class Solution {
public:
vector<int> res;
//得到以root为根节点的中序遍历
void traverse(TreeNode *root){
if(root == NULL){
return;
}
traverse(root->left);
res.push_back(root->val);
traverse(root->right);
}
vector<int> inorderTraversal(TreeNode *root) {
// write your code here
traverse(root);
return res;
}
};
非递归版:
class Solution{
public:
vector<int> preorder Traversal(TreeNode *root){
vector<int> res;
if(root == NULL)
return res;
stack<TreeNode*> s;
s.push(root);
while(!s.empty()){
TreeNode *node = s.top();
s.pop();
res.push_back(node->val);
if(node->right != NULL)
s.push(node->right);
if(node->left != NULL)
s.push(node->left);
}
return res;
}
}