二叉树的遍历 非递归 C实现——中序遍历篇
来源:互联网 发布:游戏编程入门自学 编辑:程序博客网 时间:2024/05/23 19:01
同上文法一方法类似实现:
原理:中序遍历-左根右
循环每次把左孩子入栈,直到叶节点;沿着栈里弹出的顺序一次访问右孩子。
#include <iostream>#include "stack"using namespace std;struct TNode{TNode *left;TNode *right;int data;};TNode *Root;void Visit(TNode *cur){cout<<cur->data<<endl;}stack<TNode*> ST2;void midOrder(TNode* root){while (!ST2.empty()||root!=NULL){if(root!=NULL){ST2.push(root);root=root->left;}else{root=ST2.top();ST2.pop();Visit(root);root=root->right;}}}void InitTree(TNode *root){root->data=1;TNode* tree[10];for (int i=0;i<7;i++){tree[i]=(TNode*) malloc(sizeof(TNode*));tree[i]->data=i;tree[i]->left=tree[i]->right=NULL;}tree[4]->right=tree[6];tree[1]->left=tree[3];tree[1]->right=tree[4];tree[2]->left=tree[5];tree[0]->left=tree[1];tree[0]->right=tree[2];Root=tree[0];}void main(){Root=(TNode*) malloc(sizeof(TNode*));InitTree(Root);//preOrder1(Root);midOrder(Root);}
- 二叉树的遍历 非递归 C实现——中序遍历篇
- 二叉树的遍历C实现(非递归)—中序遍历
- 二叉树的遍历 非递归 C实现——先序遍历篇
- 二叉树的遍历C实现(非递归)—先序遍历
- 【二叉树遍历算法】——前/中/后序递归与非递归的实现
- leetcode | 二叉树的前序遍历、中序遍历、后续遍历的非递归实现
- 二叉树前后中序遍历的非递归实现
- 二叉树的非递归实现中序遍历
- 非递归实现二叉树的后序遍历、前序遍历、中序遍历
- 二叉树(一) 先序遍历、中序遍历、后续遍历、层次遍历的递归与非递归实现
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- 数据结构 — 实现二叉树的前序,中序,后序遍历(非递归)
- c语言原生实现二叉树的 非递归 中序 先序 后序 遍历
- 二叉树(2)——遍历的非递归实现
- 二叉树的非递归遍历——java实现
- 数据结构的C实现_二叉树的非递归遍历和层序遍历
- 二叉树遍历(先序遍历、中序遍历、后序遍历)——递归方法和非递归方法
- c/c++实现二叉树前序,中序和后序的递归和非递归遍历
- POJ 1465 Multiple
- java基础问题---多线程有几种实现方法
- MAC下破解《欧路词典》使用次数限制
- 发送激活邮件
- android 使用webview.copyBackForwardList()来进行判断是否是在当前页打开的链接
- 二叉树的遍历 非递归 C实现——中序遍历篇
- 小型数据库sqlite3的一些实用操作
- 【java】序列化
- 【原创】linux如何给自己写的脚本程序加个环境变量
- ubuntu/wireshark: There are no interfaces on which a capture can be done.故障解决
- Android高性能文件类MemoryFile
- java 读取另外一台局域网机器上的文件
- Android源码编译(一)----------->TI-Android-GingerBread-2.3-DevKit-1.0 系统定制(just for beagleboard xm Rev B)
- 青年人初入职场