标签:leetcode 二叉树 后续遍历 非递归遍历 stack
problem:
thinking:
(1)非递归后续遍历二叉树的方法比较抽象,要借助两个stack
(2)采用双stack倒换,第一个stack出一次栈,将两个孩子(先左后右)入栈,出栈的节点保存到第二个stack。对第二个stack依次出栈即得到后续遍历的结果。
code:
class Solution { public: vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode *> input; stack<TreeNode *> output; vector<int> ret; if(root==NULL) return ret; TreeNode *node = root; input.push(node); while(!input.empty()) { node=input.top(); input.pop(); output.push(node); if(node->left!=NULL) input.push(node->left); if(node->right!=NULL) input.push(node->right); } while(!output.empty()) { node=output.top(); output.pop(); ret.push_back(node->val); } return ret; } };
leetcode || 145、Binary Tree Postorder Traversal
标签:leetcode 二叉树 后续遍历 非递归遍历 stack
原文地址:http://blog.csdn.net/hustyangju/article/details/45499291