博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的层次建树(辅助队列)以及结点的遍历函数实现
阅读量:2434 次
发布时间:2019-05-10

本文共 2094 字,大约阅读时间需要 6 分钟。

BinaryTree.h头文件

#pragma once#define _CRT_SECURE_NO_WARNINGS#include 
#include
#include
typedef char ElemType; typedef struct node {
char c; struct node* left; struct node* right; }Node,*pNode;typedef struct quene {
pNode InsertPos; struct quene* next;}Quene, *pQuene;void preOrder(pNode p);void midOrder(pNode p);void latOrder(pNode p);void buildBinaryTree(pNode* treeRoot, pQuene* queHead, pQuene* queTail, ElemType value);void clearQuene(pQuene* queHead);

BinaryTree.c文件

#include "BinaryTree.h"void preOrder(pNode p){
if (p != NULL) {
putchar(p->c); preOrder(p->left); preOrder(p->right); }}void midOrder(pNode p){
if (p != NULL) {
midOrder(p->left); putchar(p->c); midOrder(p->right); }}void latOrder(pNode p){
if (p != NULL) {
latOrder(p->left); latOrder(p->right); putchar(p->c); }}void buildBinaryTree(pNode* treeRoot, pQuene* queHead, pQuene* queTail, ElemType value){
pNode treeNew = (pNode)calloc(1, sizeof(Node)); pQuene queNew = (pQuene)calloc(1, sizeof(Quene)); pQuene queCur = *queHead; treeNew->c = value; queNew->InsertPos = treeNew; if (NULL == *treeRoot) {
*treeRoot = treeNew; *queHead = queNew; *queTail = queNew; } else {
(*queTail)->next = queNew; *queTail = queNew; if (NULL == queCur->InsertPos->left) {
queCur->InsertPos->left = treeNew; } else if (NULL == queCur->InsertPos->right) {
queCur->InsertPos->right = treeNew; *queHead = queCur->next; free(queCur); queCur = NULL; } }}void clearQuene(pQuene* queHead){
pQuene queCur; while (*queHead) {
queCur = *queHead; *queHead = queCur->next; free(queCur); }}

main.c文件

#include "BinaryTree.h"int main(){
ElemType val; pNode treeRoot = NULL; pQuene queHead = NULL, queTail = NULL; while (scanf("%c", &val) != EOF) {
if (val == '\n') {
break; } buildBinaryTree(&treeRoot, &queHead, &queTail, val); } clearQuene(&queHead); preOrder(treeRoot); printf("\n-----------------------\n"); midOrder(treeRoot); printf("\n-----------------------\n"); latOrder(treeRoot); return 0;}

转载地址:http://nxxmb.baihongyu.com/

你可能感兴趣的文章
使用 SIBus JMS 提供者
查看>>
调试 SCA 调用
查看>>
SOA 治理框架和解决方案架构
查看>>
面向企业的云计算—了解云的一些基本概念
查看>>
实现基于角色的授权
查看>>
使用定制工作流程更新 RSS 数据源
查看>>
使用 WebSphere Business Modeler 进行业务建模
查看>>
SOA 案例研究:Web 2.0 SOA 场景
查看>>
IBM BPM BlueWorks:一次 WebSphere 云试验
查看>>
websphere笔记
查看>>
使用 WebSphere Process Server 关系开发集成解决方案(2)
查看>>
最新最全的Portlet 通信过程详解
查看>>
在LINUX中安装WEB SPHERE5.1的正确方法
查看>>
WebSphere简单故障排查
查看>>
ITCAM for Websphere v6.0与ITM v6.1集成的快速指南
查看>>
数据泵 TTS(传输表空间技术)
查看>>
DATA GUARD架构(一)
查看>>
weblogic管理2 - 创建并启动一个managed server
查看>>
linux下开机自动开启单机oracle
查看>>
weblogic管理1——创建 和 删除一个domain
查看>>