二叉树的非递归遍历

来源:互联网 发布:管家婆软件单机免费版 编辑:程序博客网 时间:2024/06/03 22:57

Pre Order Traverse

vector<int> preorderTraversal(TreeNode* root) {vector<int> res;std::stack<TreeNode*> temp;while (root || !temp.empty()) {while (root) {temp.push(root);res.push_back(root->val);root = root->left;}root = temp.top();temp.pop();root = root->right;}return res;}


In Order Traverse

vector<int> inorderTraversal(TreeNode* root) {vector<int> res;std::stack<TreeNode*> temp;while (root || !temp.empty()) {while (root) {temp.push(root);root = root->left;}root = temp.top();temp.pop();res.push_back(root->val);root = root->right;}return res;}


Post Order Traverse

vector<int> postorderTraversal(TreeNode* root) {vector<int> res;std::stack<TreeNode*> temp;while (root || !temp.empty()) {while (root) {temp.push(root);res.insert(res.begin(),root->val);root = root->right;}root = temp.top();temp.pop();root = root->left;}return res;}

以上是我自己c++版本的实现

另附一篇比较详细的博客:http://www.cnblogs.com/dolphin0520/

0 0