二叉树的三种迭代遍历方法
2015-07-19 17:18
316 查看
//树节点定义 struct TreeNode{ int val; TreeNode * left; TreeNode * right; TreeNode(int x) : val(x), left(NULL), right(NULL){} }; //二叉树的三种迭代遍历方法 void Preorder_iterative(TreeNode * root){ stack<TreeNode *> sT; if(root) sT.push(root); while(!sT.empty()){ TreeNode * node = sT.top(); sT.pop(); cout<<node->val<<endl; if(node->right) sT.push(node->right); if(node->left) sT.push(node->left); } } void Inorder_iterative(TreeNode * root){ stack<TreeNode *> sT; if(root) sT.push(root); while(!sT.empty()){ TreeNode * node = sT.top(); sT.pop(); while(sT->left){ sT.push(node); node = node->left; } cout<<node->val<<endl; if(node->right) sT.push(node->right); } } void PostOrder_iterative(TreeNode * root){ stack<TreeNode *> sT TreeNode * preVisit = NULL, curr = root; while(curr || !sT.empty()){ while(curr){ sT.push(curr); curr = curr->left; } curr = sT.top(); if(curr->right == preVisit || curr->right == NULL){ cout<<curr->val<<endl; preVisit = curr; curr = NULL; sT.pop(); } else curr = curr->right; } }
相关文章推荐
- 【phpcms v9】phpcms-v9系统中session存储机制相关文件
- 欢迎使用CSDN-markdown编辑器
- 数据结构之还没有解决的任务
- FZU 2150 Fire Game (暴力BFS)
- 柯南君:看大数据时代下的IT架构(8)消息队列之RabbitMQ--案例(topic起航)
- ES6新特性--多行文本
- Python中的闭包
- 25-沙盒 文件管理者
- HDU 1548 A strange lift
- hdu 1010 Tempter of the Bone(DFS)
- Ubuntu下安装和使用GMP
- css命令
- 柯南君:看大数据时代下的IT架构(7)消息队列之RabbitMQ--案例(routing 起航)
- java中io操作1
- Java深入 - Spring 异常处理HandlerExceptionResolver
- dos下打jar包和用bat文件运行
- iOS设计模式-桥接
- 转:nutch相干框架安装使用最佳指南
- 数据结构之线索二叉树
- 柯南君:看大数据时代下的IT架构(7)消息队列之RabbitMQ--案例(routing 起航)