首页 > 其他分享 >二叉树的实现及应用

二叉树的实现及应用

时间:2023-03-15 12:33:14浏览次数:35  
标签:实现 BiTree BiTNode 二叉树 应用 printf rchild data

  • 本文记录二叉树的数据结构定义及基本操作的算法描述,并对算法进行简单应用。
  • 采用C语言实现。


源程序

//BiTree.c
#include <stdio.h>
#include <stdlib.h>

//二叉树的数据结构定义
typedef char ElemType;
typedef struct BiTNode{
	ElemType data;
	struct BiTNode *lchild;
	struct BiTNode *rchild;
}BiTNode, *BiTree;

//前序创建二叉树
void CreatBiTree(BiTree *T) {
    ElemType ch;
    scanf("%c", &ch);
    if (ch == '#'){
        *T = NULL;
    }
    else{
        *T = (BiTNode *)malloc(sizeof(BiTNode));
        (*T)->data = ch;
        CreatBiTree(&(*T)->lchild);
        CreatBiTree(&(*T)->rchild);
    }
}

//前序遍历
void PreOrderTraversal (BiTree T) {
    if (T) {
        printf("%c", T->data);
        PreOrderTraversal (T->lchild);
        PreOrderTraversal (T->rchild);
    }
}

//中序遍历
void InOrderTraversal (BiTree T) {
    if (T) {
        InOrderTraversal( T->lchild );
        printf("%c", T->data);
        InOrderTraversal( T->rchild );
    }
}

//后序遍历
void PostOrderTraversal (BiTree T) {
    if (T) {
        PostOrderTraversal( T->lchild );
        PostOrderTraversal( T->rchild );
        printf("%c", T->data);
    }
}
int main() {
	BiTree T;

	printf("Create  Binary Tree:");
	CreatBiTree(&T);
	printf("\n");

	printf("PreOrder:");
	PreOrderTraversal(T);
	printf("\n\n");

	printf("InOrder:");
	InOrderTraversal(T);
	printf("\n\n");

	printf("PostOrder:");
	PostOrderTraversal(T);
	printf("\n\n");

	return 0;
}


运行结果

Create  Binary Tree:ABD###C#F##

PreOrder:ABDCF

InOrder:DBACF

PostOrder:DBFCA

标签:实现,BiTree,BiTNode,二叉树,应用,printf,rchild,data
From: https://www.cnblogs.com/crossoverpptx/p/17218065.html

相关文章

  • 2023,国产操作系统应用开发的路在何方?
    操作系统是为其它软件提供运行环境的硬件扩展,在整个系统中起着承上启下的作用。 对于国产操作系统, 顾名思义就是完全由我国自主研发的操作系统,比如鸿蒙(HarmonyOS)、深度D......
  • 认识一下,我们是应用社交「幕后大佬」 IM 家族
    今天,就让我们跟随小M一起来认识一下:*艾瑞咨询近期发布的《2023年全球互联网通信云行业研究报告》(本公众号后台回复【报告】获取完整版)显示,2021年全球互联网通信云市场......
  • Python TensorFlow实现Sequential深度神经网络回归
      本文介绍基于Python语言中TensorFlow的Keras接口,实现深度神经网络回归的方法。(基于PythonTensorFlowKeras的深度学习回归代码——keras.Sequential深度神经网络)1......
  • Redis使用ZSET实现消息队列使用总结一
    转载请注明出处:目录1.zset为什么可以做消息队列2.zset实现消息队列的步骤3.使用jedis实现消息队列示例4.+inf与-inf5.redis使用list与zset做......
  • ROS的软件包安装和应用
    一.ROS应用商店简介:ROS应用商店一般用来存放ROS软件包,有多个应用商店,除了ROS官方应用商店外,之前添加的清华源也是一个应用商店,ROS软件包除了放在应用商店外,还有一些是以源......
  • ArcEngien|实现拖框/圆/多边形放大缩小
    问题分析加载地图文档加载地图文档的过程:先点击“打开”按钮,自动弹出电脑文件夹目录,再从中选取“.mxd”类型的地图文档;选中后点击确定,即可加载;加载时,地图内容显示在Map界......
  • Python脚本实现单据体背景色及字段前景色设置
    #PythonEntitySetColorclr.AddReference('Kingdee.BOS.Core')fromKingdee.BOS.Core.DynamicForm.PlugIn.ControlModelimport*defAfterEntryBarItemClick(e)......
  • Python脚本实现值更新事件赋值过程记录日志监控
    #LogWatch实现值更新事件赋值过程记录日志监控clr.AddReference('System')clr.AddReference('Kingdee.BOS')clr.AddReference('Kingdee.BOS.Core')fromKingdee.BOSimport......
  • 根据后序序列构建二叉树并输出其前序序列
    1#include<bits/stdc++.h>2usingnamespacestd;3typedefstructTreeNode*Tree;//定义了一个叫做TreeNode的结构体指针*Tree4typedefcharElementType;......
  • Java中List、Map常见实现类
    一、List1.ArrayList底层是数组实现,线程不安全publicclassArrayList<E>extendsAbstractList<E>implementsList<E>,RandomAccess,Cloneable,java.io.S......