题目描述:给定一个二叉树,返回它的中序 遍历。
解题思路:(1)根的左孩子依次入栈(2)左孩子全部入栈后,栈顶元素出栈。(3)若栈顶元素有右孩子重复(1)的操作。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int>res;
stack<TreeNode*>path;
while(root){
path.push(root);
root=root->left;
}
while(!path.empty()){
auto node=path.top();
path.pop();
res.push_back(node->val);
node=node->right;
while(node){
path.push(node);
node=node->left;
}
}
return res;
}
};