[C++11]二叉树前序、中序和后序遍历2(非递归)
来源:互联网 发布:设计软件 logo cdr 编辑:程序博客网 时间:2024/06/05 04:11
(1)前序 非递归
//非递归前序遍历 void NRPreOrderTraverse(function<void(type& record)> visit) { if(_root!=nullptr) { stack<shared_ptr<treeNode<type>>> Stack; Stack.push(_root); shared_ptr<treeNode<type>> ptr; while(!Stack.empty()) { ptr=Stack.top(); visit(ptr->Record()); Stack.pop(); if(ptr->RightChild!=nullptr) Stack.push(ptr->RightChild); if(ptr->LeftChild!=nullptr) Stack.push(ptr->LeftChild); } } }
(2)中序 非递归
//非递归中序遍历 void NRInOrderTraverse(function<void(type& record)> visit) { if(_root!=nullptr) { stack<shared_ptr<treeNode<type>>> Stack; auto ptr=_root; do{ while(ptr!=nullptr) { Stack.push(ptr); ptr=ptr->LeftChild; } ptr=Stack.top(); Stack.pop(); visit(ptr->Record()); ptr=ptr->RightChild; }while(!Stack.empty()||ptr!=nullptr); } }
(3)后序 非递归
//非递归后序遍历 void NRPostOrderTraverse(function<void(type& record)> visit) { if(_root!=nullptr) { shared_ptr<treeNode<type>> ptr; stack<shared_ptr<treeNode<type>>> Stack,sOutput; Stack.push(_root); while(!Stack.empty()) { ptr=Stack.top(); Stack.pop(); sOutput.push(ptr); if(ptr->LeftChild!=nullptr) { Stack.push(ptr->LeftChild); } if(ptr->RightChild!=nullptr) { Stack.push(ptr->RightChild); } } while(!sOutput.empty()) { ptr=sOutput.top(); visit(ptr->Record()); sOutput.pop(); } } }
2 0
- c/c++实现二叉树前序,中序和后序的递归和非递归遍历
- [C++11]二叉树前序、中序和后序遍历2(非递归)
- (C语言版)二叉树遍历算法——包含递归前、中、后序和层次,非递归前、中、后序和层次遍历共八种
- 二叉树前序,中序,后序的遍历【递归(借用栈实现)和非递归】
- 二叉树非递归和递归遍历(先序,中序,后序)
- 数据结构:二叉树的前序,中序,后序遍历(递归和非递归)
- 二叉树的递归和非递归遍历(前序、中序、后序)
- 二叉树前序、中序、后序遍历非递归写法
- 二叉树前序、中序、后序遍历非递归写法
- 二叉树非递归后序遍历(非递归遍历中最麻烦的一个)
- 二叉树的先序、中序和后序的非递归遍历(C语言实现)
- 二叉树前序遍历和中序遍历 非递归算法
- 【二叉树】 前序、中序和后序的递归遍历与非递归遍历
- 二叉树的先序、中序、后序递归遍历和非递归遍历
- 二叉树前序、中序、后序遍历(递归版、非递归版)
- 二叉树非递归遍历 (前,中,后) c
- 数据结构---二叉树的前序、中序、后序遍历的递归和非递归 实现(C++)
- 二叉树先序遍历,中序遍历和后序遍历的非递归实现
- 《how tomcat works》第一章 构建一个简单的web服务器
- 【树项目3 - 利用二叉树遍历思想解决问题——第10周】
- 泛型
- 进击的KFC:OC(七)类的扩展
- java.lang.NoSuchMethodError: org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticL
- [C++11]二叉树前序、中序和后序遍历2(非递归)
- 临界区(Critical section)与互斥体(Mutex)的区别
- 2015 10 30 结构体
- hibernate中的PO持久化对象及PO三种状态
- HDU 2159 DP
- 2015 10 30 指针
- jsp页面弹出For input string:""
- C++中引用和指针的联系和区别
- swift语言入门介绍