排序二叉树应用 2
来源:互联网 发布:name.com 域名转出 编辑:程序博客网 时间:2024/06/05 22:58
void Btree::FdginOrder(mytree t)//中序非递归遍历{if(t==NULL) ;mytree p=t;stack<mytree> s;while(!s.empty()||p){ while(p) { s.push(p); p=p->left ; } if(!s.empty()) { p=s.top(); s.pop(); cout<<p->data <<" "; p=p->right ; } }}void Btree::FdgpreOrder(mytree t)//前序非递归遍历{if(t==NULL) ;mytree p=t;stack<mytree> s;while(!s.empty()||p){ while(p) { cout<<p->data <<" "; s.push(p); p=p->left ; } if(!s.empty()) { p=s.top(); s.pop(); p=p->right ; } }}void Btree::FdgpostOrder(mytree t)//后序非递归遍历{int n;if(root==NULL) ;stack<mytree> s;mytree pNow,pLast;pNow=t;pLast=NULL;while(pNow){ s.push(pNow); n=pNow->data ; pNow=pNow->left ;//将pNow放到左子树 }while(!s.empty()){ pNow=s.top(); n=pNow->data ; s.pop(); if(pNow->right ==NULL||pNow->right ==pLast) { cout<<pNow->data<<" " ; pLast=pNow; n=pNow->data ; } else if (pNow->left == pLast) { s.push(pNow); pNow=pNow->right ; n=pNow->data ; while(pNow) { s.push(pNow); pNow=pNow->right ; } }} } 简述一下思路,中序就是先把左子树放到栈里,再吐出来,再遍历右子数前序就是先存起来左子树,然后打印根节点,最后右子树;后序最麻烦,要先遍历完左右子树,最后打印根节点,所以不仅要判断当前节点,还要关注上一个节点。
阅读全文
0 0
- 排序二叉树应用 2
- 二叉树应用——堆排序
- 二叉树,排序二叉树
- 二叉树的应用(1)--二叉树排序树基本操作
- 排序算法-二叉树排序
- 10_排序二叉树删除-2
- 树-排序二叉树
- 二叉树排序
- 排序二叉树
- 使用二叉树排序
- 排序二叉树 原理
- 二叉树排序法
- 二叉树排序
- java-二叉树排序
- 二叉排序(查找)树
- 排序二叉树
- 二叉树排序
- 二叉树排序
- 《Linux内核设计与实现》读书笔记(二十)- 补丁, 开发和社区
- 编译原理实验-FLEX+BISON+DEV C++完美解决方案
- MongoDB备份的两种方法
- Refactoring
- GCC如何编译内嵌汇编代码
- 排序二叉树应用 2
- 简单的C语言猜数游戏
- alpine踩坑
- Android中AOP实践之三AspectJ解析篇
- Material Design控件之Snackbar
- 学习之道
- MIHH-新人报道,从零开始
- O
- MVP框架之EasyMVP