数据结构-3 二叉树的遍历
来源:互联网 发布:javaweb项目 知乎 编辑:程序博客网 时间:2024/06/09 21:45
#include<stdio.h>typedef int ElementType;// 二叉树链式存储的数据结构typedef struct TNode *Position;typedef Position BinTree;struct TNode { ElementType Data; BinTree Left; BinTree Right;};// 前序遍历的递归实现void PreorderTraversal1(BinTree BT) { if (BT) { printf("%d", BT->Data); PreorderTraversal(BT->Left); PreorderTraversal(BT->Right); }}// 前序遍历的堆栈实现void PreorderTraversal2(BinTree BT) { BinTree T = BT; Stack S = CreateStack(MaxSize); while (T || !isEmpty(S)) { while (T) { Push(S, T); printf("%d", T->Data); T = T->Left; } if (!isEmpty(S)) { T = Pop(S); T = T->Right; } }}// 中序遍历的递归实现void InorderTraversal1(BinTree BT) { if (BT) { PreorderTraversal(BT->Left); printf("%d", BT->Data); PreorderTraversal(BT->Right); }}// 中序遍历的堆栈实现void InorderTraversal2(BinTree BT) { BinTree T = BT; Stack S = CreateStack(MaxSize); while (T || !isEmpty(S)) { while (T) { Push(S, T); T = T->Left; } if (!isEmpty(S)) { T = Pop(S); printf("%d", T->Data); T = T->Right; } }}// 后序遍历的递归实现void PostorderTraversal1(BinTree BT) { if (BT) { PreorderTraversal(BT->Left); PreorderTraversal(BT->Right); printf("%d", BT->Data); }}// 后序遍历的堆栈实现// 层次遍历的队列实现void LevelorderTraversal(BinTree BT) { BinTree TP; if (!BT) return; Queue Q = CreateQueue(); AddQuene(Q, BT); // 将根节点入队 while (isEmpty(Q)) { TP = DeleteQueue(Q); printf("%d ", TP->Data); if (TP->Left) AddQuene(Q, TP->Left); if (TP->Right) AddQuene(Q, TP->Right); }}
阅读全文
0 0
- 数据结构-3 二叉树的遍历
- 数据结构 - 二叉树的遍历
- 数据结构-----二叉树的遍历
- 数据结构----二叉树的遍历
- 数据结构 二叉树的遍历
- 【数据结构】 二叉树的遍历
- 【数据结构】二叉树的遍历
- 数据结构 - 二叉树的遍历
- 数据结构二叉树的遍历
- 二叉树的遍历(数据结构)
- 数据结构--二叉树的遍历
- [数据结构]二叉树的遍历
- 【数据结构】二叉树的遍历
- 【数据结构】二叉树的遍历
- 数据结构----二叉树的遍历
- 数据结构-二叉树的遍历
- 数据结构-二叉树的遍历
- 二叉树遍历 - 数据结构
- 2.2.13—单链表—Reorder List
- 获取spring的ApplicationContext几种方式
- 安卓自定义控件撞屏幕边缘按入射角反弹
- php中引用&的真正理解-变量引用、函数引用、对象引用
- FTP协议分析
- 数据结构-3 二叉树的遍历
- UE4_TimeLine
- 1、t_sne详解
- ListView一键置顶功能实现
- Ognl
- C# IComparer 用法即正逆序返回值理解
- springBoot + hibernate + Druid + MySQL + servlet(jsp)
- java搬运工——IO流
- SQL练习(一)