您的位置:首页 > 理论基础 > 数据结构算法

LeetCode Binary Tree Postorder Traversal(数据结构)

2015-11-02 21:25 211 查看
题意:

  用迭代法输出一棵二叉树的后序遍历结果。

思路:

  (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> postorderTraversal(TreeNode* root) {
vector<int> ans;
if(root==NULL)    return ans;

stack<TreeNode*> stac;
stac.push(root);

while(!stac.empty())
{
TreeNode *top=stac.top();
ans.push_back(top->val);
stac.pop();
if(top->left)    stac.push(top->left);
if(top->right)    stac.push(top->right);
}
reverse(ans.begin(),ans.end());
}
};


AC代码
  

  (3)O(1)的空间,依然O(n)的复杂度。待写。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: