二叉树的遍历C++实现
来源:互联网 发布:儿童编程软件scratch2 编辑:程序博客网 时间:2024/05/16 18:41
strcut BinTree{ElementType Data;BinTree Left;BinTree Right;}//先序遍历递归法:void PreOrderTraversal(BinTree BT){if(BT){cout<<BT->Data;PreOrderTraversal(BT->Left);PreOrderTraversal(BT->Right);}}//中序遍历递归法void InOrderTraversal(BinTree BT){if(BT){PreOrderTraversal(BT->Left);cout<<BT->Data;PreOrderTraversal(BT->Right);}}//后序遍历递归法void PostOderTraversal(BinTree BT){if(BT){PreOrderTraversal(BT->Left);PreOrderTraversal(BT->Right);cout<<BT->Data;}}//中序遍历的非递归算法(堆栈)void InOrderTraversal(BinTree BT){BinTree T=BT;Stack S = CreateStack(MaxSize); //创建并初始化堆栈Swhile( T || !IsEmpty(S)){while(T){ //向左压栈直到最后一个结点的左结点为NULL后退出循环Push(S,T);T=T->Left;}if(!IsEmpty(S){ //抛出栈顶元素,第一轮抛出叶节点T=Pop(S);cout<<T->Data;T=T->Right;}}}//前序遍历的非递归算法(堆栈)void InOrderTraversal(BinTree BT){BinTree T=BT;Stack S = CreateStack(MaxSize); //创建并初始化堆栈Swhile( T || !IsEmpty(S)){while(T){ //向左压栈直到最后一个结点的左结点为NULL后退出循环Push(S,T);cout<<T->Data;T=T->Left;}if(!IsEmpty(S){ //抛出栈顶元素,第一轮抛出叶节点T=Pop(S);T=T->Right;}}}//层次遍历(队列)void LevelOrderTraversal(BinTree BT){Queue Q; BinTree T;if(!BT) return; //若是空树,直接返回Q = CreateQueue(MaxSize);AddQ(Q,BT);while( !IsEmptyQ( Q ) ){T = DeleteQ(Q);cout<<T->Data;if(T->Left) AddQ(Q,T->Left);if(T->Right) AddQ(Q,T->Right);}}
0 0
- C语言实现二叉树的遍历
- C实现二叉树的各种遍历
- 二叉树的创建、遍历及搜索(C实现)
- 递归实现二叉树的建立及前中后序遍历 c
- 二叉树构造与遍历的C程序实现代码
- 二叉树遍历的c语言非递归实现
- 二叉树的非递归遍历C实现
- 二叉树的几种遍历(C实现)
- 二叉树的非递归遍历C语言实现
- 【算法】二叉树的递归遍历C语言实现
- 二叉树的创建与遍历(C语言实现)
- C语言之二叉树(包括遍历的实现)
- C实现二叉树的建立和遍历
- 平衡二叉树(遍历,插入,删除)的C实现
- C实现二叉树的先序遍历,中序遍历,后序遍历
- c语言实现二叉树的先序遍历,中序遍历,后序遍历
- 二叉树遍历的实现
- 二叉树的遍历实现
- Python学习笔记--异常处理
- Hadoop 的子项目
- 异常管理 - Java异常处理分析 (Unchecked Exception VS Checked Exception)
- Input Driver
- 安卓图片加载文字模糊解决方法
- 二叉树的遍历C++实现
- 使用Jenkins搭建iOS开发的CI服务器
- android measure 流程 (方便记忆)
- Xml介绍
- 调用app出现"This app is not allowed to query for scheme..."
- win7github上SlidingMenu导入androidstudio
- Linux上更改mysql数据库目录
- 怎么让ubuntu变得更加好用
- u.aly.bt: can't find referenced method 'int checkSelfPermission(java.lang.String)' 混淆失败的问题