发布时间:2023-05-07 13:00
二叉树遍历,非递归版
#include #include #include #include #include #include #include #include #include using namespace std; class node { public: char num; node* left; node* right; node() { num = 0; left = NULL; right = NULL; } node(char n) { num = n; left = NULL; right = NULL; } }; void pre(node* head) { if (head != NULL) { stack sta; sta.push(head); while (!sta.empty()) { head = sta.top(); cout << head->num << \" \"; sta.pop(); if (head->right) sta.push(head->right); if (head->left) sta.push(head->left); } } cout << endl; } void mid(node* head) { if (head != NULL) { stack sta; while (!sta.empty()||head) { if (head) { sta.push(head); head = head->left; } else { head = sta.top(); sta.pop(); cout << head->num << \" \"; head = head->right; } } } cout << endl; } void beh(node* head) { if (head != NULL) { stack sta; stack help; sta.push(head); while (!sta.empty()) { head = sta.top(); help.push(sta.top()->num); sta.pop(); if (head->left) sta.push(head->left); if (head->right) sta.push(head->right); } while (!help.empty()) { cout << help.top()<<\" \"; help.pop(); } } cout << endl; } void creatT(node* head) { static char n = \'B\'; if (n == \'F\') return; node* l = new node(); node* r = new node(); l->num = (n ++); r->num = (n ++); head->left = l; head->right = r; creatT(head->left); creatT(head->right); } int main() { node* tree = new node(); tree->num = \'A\'; node* head = tree; creatT(tree); mid(tree); pre(tree); beh(tree); }
于文文、胡夏等明星带你玩转派对 皮皮APP点燃你的夏日
promise基本使用
基于React Context实现一个简单的状态管理的示例代码
java中continue和break区别
微信小程序实现数字滚动动画
Fabric.js 元素被选中时保持原有层级
Hadoop分布式文件系统——HDFS介绍
10分钟就能搭建远程开发环境?你早点怎么不出现(#`n´)!
Vue3.0 + Vite + Ant Design Vue + TypeScript 管理后台vue-vben-admin
ATT&CK实战系列——红队实战(一)
ES6学习——ES6新增的类型和函数
.net webapi 实现 接口版本控制并打通swagger支持
【OPENVX】快速角点提取之 vxuFastCorners
浅谈倍增法求解LCA
【Java面试】什么是守护线程,它有什么特点
【多线程】锁策略
JavaScript ES6模块导入和导出的方法
2022中国信通院首届业务与应用安全发展论坛成功召开!
uni踩坑笔记 - 离线打包调起微信分享后从微信返回APP时黑屏
Qt读写Excel--QXlsx插入、读取图片6
ItVuer - 免责声明 - 关于我们 - 联系我们
本网站信息来源于互联网,如有侵权请联系:561261067@qq.com
桂ICP备16001015号