二叉树遍历算法(递归实现先序中序和后续遍历)(非递归实现中序和先续)
2017-09-07 23:32
337 查看
二叉树遍历
这两天抓紧把二叉树遍历复习了一遍,递归实现还是一如既往地简洁,迭代版本写了好久还是只实现了先序和中序,后续一直没搞明白,有空了再更新。递归实现
void RecursionBackTree(TreeNode * root) { if (root) { //先续遍历 //cout << root->val << " "; RecursionBackTree(root->left); //中续遍历 //cout << root->val << " "; RecursionBackTree(root->right); //后续遍历 cout << root->val << " "; } }
迭代版本
先序遍历
//Preorder void IterateFirstTraverse(TreeNode* root) { if (!root) return; stack<TreeNode*> st; while (true) { while (root) { cout << root->val<<" "; st.push(root->right); root = root->left; } if (!st.empty()) { root = st.top(); st.pop(); } else { break; } } cout << endl; }
中序遍历
void IterateTraverse(TreeNode* root) { if (!root) return; stack<TreeNode* > st; //st.push(root); //root = root->left; while (true) { while (root) { st.push(root); root = root->left; } if (st.empty()) break; root = st.top(); st.pop(); cout << root->val<<" "; root = root->right; } cout << endl; }
相关文章推荐
- 二叉树先序、中序、后续遍历递归以及非递归java实现
- 二叉树前序、中序、后续遍历(递归实现)
- C++实现二叉树前序中序后续遍历的非递归方法总结
- 二叉树的前序,中序,后续,递归及非递归遍历的python实现
- 二叉树的前序、中序、后续遍历,递归、非递归实现
- Java实现树的遍历(前序、中序、后续(递归|非递归)、层次)
- 二叉树先序、中序、后续遍历(非递归实现)
- 树的遍历(前序,中序,后续,栈与递归实现)
- 递归和非递归俩种方法实现二叉树的前序、中序、后续遍历
- 二叉树的实现&&递归和非递归方式前序、中序、后续遍历&&发现一个节点中序遍历的下一节点
- Java 二叉树的前序、中序、后续遍历 递归和迭代实现
- 数据结构——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 实现对于二叉树的前序、中序、后序的递归遍历
- java 实现二叉树的构建,先序,中序,后序,层次,递归,非递归的遍历
- 前序、中序、后序遍历二叉树的非递归实现
- java实现的二叉树(前序、中序、后序)递归和非递归遍历,包含层序遍历
- 二叉树先序,中序,后序遍历非递归实现
- 【基础备忘】二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- java语言实现二叉树的前序、中序与后序遍历(递归与非递归) 层次遍历
- 数据结构——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现