代码是在中序遍历二叉树的非递归算法上修改的。
class Solution {
public:
vector<vector<int>> inorderTraversal(TreeNode* root) {
vector<vector<int>> res; //存储结果
stack<TreeNode*> s; //存储树结点的栈
stack<int> level_s; //存储树结点相应层次的栈
int cur_level=1; //当前结点层次
TreeNode* p=root;
while(!s.empty() || p!=NULL){
if(p!=NULL){
s.push(p);
level_s.push(cur_level++);
p=p->left;
}
else{
p = s.top();
cur_level = level_s.top();
vector<int> tmp;
tmp.push_back(p->val);
tmp.push_back(cur_level);
res.push_back(tmp);
s.pop();
level_s.pop();
p=p->right;
cur_level++;
}
}
for(int i=0;i<res.size();i++){
cout<<res[i][0]<<","<<res[i][1]<<endl;
}
return res;
}
};