非递归二叉树的序列打印
来源:互联网 发布:好吃的面 知乎 编辑:程序博客网 时间:2024/06/05 19:01
请用非递归方式实现二叉树的先序、中序和后序的遍历打印。
给定一个二叉树的根结点root,请依次返回二叉树的先序,中序和后续遍历(二维数组的形式)。
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class TreeToSequence {public: vector<vector<int> > convert(TreeNode* root) { vector<vector<int> > res; vector<int> tmp; preorder(root,tmp); res.push_back(tmp); tmp.clear(); midorder(root,tmp); res.push_back(tmp); tmp.clear(); posorder(root,tmp); res.push_back(tmp); return res; } // 先序遍历 void preorder(TreeNode* root,vector<int> &tmp){ if(root==NULL) return ; stack<TreeNode*> s; s.push(root); while(!s.empty()){ TreeNode* cur=s.top(); tmp.push_back(cur->val); s.pop(); if(cur->right!=NULL) s.push(cur->right); if(cur->left!=NULL) s.push(cur->left); } } // 中序遍历 void midorder(TreeNode* root,vector<int> &tmp){ if(root==NULL) return ; stack<TreeNode*> s; TreeNode* cur=root; while(!s.empty()||cur!=NULL){ if(cur!=NULL){ s.push(cur); cur=cur->left; }else{ cur=s.top(); tmp.push_back(cur->val); s.pop(); cur=cur->right; } } } // 后序遍历 void posorder(TreeNode* root,vector<int> &tmp){ if(root==NULL) return ; stack<TreeNode*> s1; stack<TreeNode*> s2; s1.push(root); while(!s1.empty()){ TreeNode* cur=s1.top(); s2.push(cur); s1.pop(); if(cur->left!=NULL) s1.push(cur->left); if(cur->right!=NULL) s1.push(cur->right); } while(!s2.empty()){ tmp.push_back(s2.top()->val); s2.pop(); } }};
阅读全文
0 0
- 非递归二叉树的序列打印
- 二叉树2:非递归二叉树的序列打印
- 递归二叉树的序列打印、非递归二叉树的序列打印
- 非递归二叉树的序列打印练习
- 递归二叉树的序列打印练习
- 递归二叉树的序列打印
- 递归二叉树的序列打印
- 二叉树1:递归二叉树的序列打印
- 数据结构与算法分析笔记与总结(java实现)--二叉树2:非递归二叉树的序列打印练习题
- 二叉搜索树的后序遍历序列(递归与非递归)
- 树的学习——(递归构建二叉树、递归非递归前序中序后序遍历二叉树、根据前序序列、中序序列构建二叉树)
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归与非递归
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- 二叉树的递归、非递归遍历
- 二叉树的递归和非递归
- Android Oreo系统移植上需要注意的更新
- C++ 数论-最大公约数和最小公倍数
- wireshark 如何识别应用层的协议是什么呢?
- unbuntu安装软件时出现的问题
- 自定义JSR validation及Swagger的一些坑
- 非递归二叉树的序列打印
- 欢迎使用CSDN-markdown编辑器
- log4j2在web工程设置日志文件保存在工程目录内
- 数据库sql大全!!!!!重要
- HashMap和List遍历方法总结及如何遍历删除元素
- echarts配置总结
- 用InstallShield打包的程序,安装时提示无法写入键
- C语言经典编程100例(20)-猴子吃桃
- leetcode 19. Remove Nth Node From End of List 双指针 + 移动窗口