1、题目描述
输入一个二叉树,返回它的中序遍历。
2、思路
way 1: Recursive Solution
way 2:Iterative Solution
声明一个stack,把根节点放进去,把根节点的左节点放入,循环这个过程,知道左节点是NULL。
把stack顶的节点root取出,把节点数值放入ans,若root的右节点非NULL,把右节点放入stack,把右节点的左节点放入stack,
循环这个过程。
重复上述过程,直到stack为空。
3、代码
递归法:略。
vector<int> inorderTraversal(TreeNode* root) {
vector<int> ans;
stack<TreeNode*> s;
while(root){
s.push(root);
root = root->left;
}
while(!s.empty()){
root = s.top();
s.pop();
ans.push_back(root->val);
if(root->right){
root = root->right;
while(root){
s.push(root);
root = root->left;
}
}
}
return ans;
}
/*vector<int> inorderTraversal(TreeNode* root) {
vector<int> ans;
stack<TreeNode*> s;
while(root||!s.empty()){
if(root){
s.push(root);
root=root->left;
}
else{
root = s.top();
s.pop();
ans.push_back(root->val);
root=root->right;
}
}
return ans;
}*/