数据结构-二叉树(binaryTree)-C语言实现

这篇博客详细介绍了如何使用C语言实现二叉树的基本功能,包括初始化、获取树的状态、添加节点、查找节点、删除节点、打印节点到屏幕以及删除所有节点。文章通过接口“binaryTree.h”和实现部分“binaryTree.c”来阐述具体的实现过程,并提供了相应的模块测试。
摘要由CSDN通过智能技术生成

用C语言实现二叉树基本功能

接口部分 “binaryTree.h”
/*二叉树接口*/

#ifndef _BINARY_TREE_H_
#define _BINARY_TREE_H_
#include <stdbool.h>

#define NAME_LENGTH 20
#define MAX_TRNODES 15  //测试用定义的最大节点数量,根据情况设定

/*实体定义*/
typedef struct _item
{
    char name[NAME_LENGTH];  //名字作为主键
    int value;
} Item;

typedef struct _trnode
{
    struct _trnode *left;
    struct _item item;
    struct _trnode *right;
} Trnode;

typedef struct _tree
{
    struct _trnode *root;
    int total;
} Tree;


/*函数原型*/
//初始化树
void InitializeTree(Tree *tree);

//树是空的吗
bool TreeIsEmpty(const Tree *tree);
//没有子节点吗
bool TreeHasEmpty(const Tree *tree);
//树是满的吗
bool TreeIsFull(const Tree *tree);
//有两个子节点吗
bool TreeHasFull(const Tree *tree);
//获得树的项数
int TrnodesCount(const Tree *tree);

//新建一个树节点, 传入 item 储存在节点中
bool AddTrnode(Tree *tree, Item item);
//查找一个树节点, 传入 item 进行比对, 查找的节点地址存入 pnode , 相应父节点地址存入 plast 
bool SearchTrnode(const Tree *tree, Item item, Trnode **pnode, Trnode **plast);
//删除一个树节点, 传入 item 利用 查找函数 获得目标地址, 对目标空间进行释放(free)
bool DeleteTrnode(Tree *tree, Item item);
//打印节点, 通过 递归 将信息输出到屏幕
void printTrnode(const Tree *tree);

//删除所有树节点, 递归 释放(free) 节点空间
void DeleteAllTrnode(Tree *tree);

#endif
实现部分 “binaryTree.c”
初始化
void InitializeTree(Tree *tree)
{
    tree->root = NULL;  //根节点置空
    tree->total = 0;    //节点数归零
}
获得树的状态

bool TreeIsEmpty(const Tree *tree)
{
    if (NULL == tree->root) {  //根节点为空则树为空
        return true;
    } else {
        return false;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值