题目描述:
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
- 树中节点数目在范围 [0, 100] 内
- -100 <= Node.val <= 100
题解思路:
二叉树中序遍历的迭代方法,利用指针来访问节点,一直往左节点访问,直到左节点为空则停止,然后是根,右节点
- 利用栈来保存访问的节点
代码:
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
stack<TreeNode*> s;
vector<int> result;
TreeNode * temp = root;
while(temp || !s.empty()){
if(temp){ // 一直访问存在的左节点
s.push(temp); //放入左节点
temp = temp->left;
}else{
temp = s.top(); //相当于null的父节点,此null是父节点的左节点
s.pop();
result.push_back(temp->val); //这一步就相当于访问根节点
temp = temp->right;
}
}
return result;
}
};