实验6-2 基于二叉链表存储结构实现二叉树的基本操作

news/2024/12/23 18:16:42 标签: 链表, 数据结构, 算法, c语言

题目:计算二叉树中的叶子结点个数

(1)如果二叉树为空,则叶子结点个数为0。

(2)如果二叉树只有根节点,则叶子结点个数为1

(3)左子树叶子结点数+右子树叶子结点数

一、原代码

#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef char TElemType; //TElemType 为可定义的数据类型,此设为char类型
//二叉树的二叉链表存储表示
typedef struct BiTNode
{				
	TElemType data;				    //结点数据域
	struct BiTNode *lchild,*rchild;	//左右孩子指针
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T);
void Copy(BiTree T, BiTree *NewT);
void PreOrderTraverse(BiTree T);
Status BiTreeEmpty(BiTree T);
Status Depth(BiTree T);
Status NodeCount(BiTree T);
Status LeafCount(BiTree T);
// 给出上述函数原型的定义
int main()
{
	BiTree tree,new_tree;
	CreateBiTree(&tree);
    if (!BiTreeEmpty(tree))
    {
        printf("该树为空树!\n");
        exit(ERROR);
    }
	else
	    printf("该树为非空树!\n");
	Copy(tree,&new_tree);
	printf("复制得到的新树的先序序列:\n");
	PreOrderTraverse(new_tree);
	printf("\n");
	printf("新树的深度为:%d\n",Depth(new_tree));
	printf("新树的结点个数为:%d\n",NodeCount(new_tree));
	printf("新树的叶子结点个数为:%d\n",LeafCount(new_tree));
    return ERROR;
}

二、七个函数的代码

void CreateBiTree(BiTree *T) { // 创建二叉树
    char ch;
    scanf("%c", &ch);
    if (ch == '#') {
        *T = NULL;
    } else {
        *T = (BiTree)malloc(sizeof(BiTNode));
        if (!*T) exit(OVERFLOW);
        (*T)->data = ch;
        CreateBiTree(&(*T)->lchild);
        CreateBiTree(&(*T)->rchild);
    }
}
void Copy(BiTree T, BiTree *NewT) { /

http://www.niftyadmin.cn/n/5796797.html

相关文章

数据可视化echarts学习笔记

目录&#xff0c;介绍 知识储备 一端操作&#xff0c;多端联动的效果&#xff08;开启了多个网页&#xff0c;操作一端&#xff0c;多个网页的效果会跟着改变&#xff09; cmd命令控制面板返回上一级或上上级 在当前目录打开文件&#xff1a; cd 文件名 在Windows命令提示符&am…

[文献阅读] Unsupervised Deep Embedding for Clustering Analysis (无监督的深度嵌入式聚类)

文章目录 Abstract:摘要聚类深度聚类 KL散度深度嵌入式聚类(DEC)KL散度聚类软分配&#xff08;soft assignment&#xff09;KL散度损失训练编码器的初始化聚类中心的初始化 实验评估总结 Abstract: This week I read Unsupervised Deep Embedding for Clustering Analysis .It…

HTTP协议及安全防范

由于图片解析问题&#xff0c;可以点击查看 &#x1f449;&#x1f3fb; 博客原文 HTTP&#xff08;Hypertext Transfer Protocol&#xff09;超文本传输协议是一个用于 Web 应用程序通信的应用层协议。它是一种客户端-服务器协议&#xff0c;客户端通过发送请求到服务器来获取…

Vue 单表 CRUD模板 前端

结合后端CRUD模板食用更佳 后端CRUD模板 js文件 指向了后端的方法 页面基本模板 import request from /utils/request // 查询关键词列表 export function page(param) {return request({url: /systemConfig/page,method: post,params: param}) }// 新增 export function ad…

2024年图像处理、多媒体技术与机器学习

重要信息 官网&#xff1a;www.ipmml.org 时间&#xff1a;2024年12月27-29日 地点&#xff1a;中国-大理 简介 2024年图像处理、多媒体技术与机器学习&#xff08;CIPMT 2024&#xff09;将于2024年12月27-29日于中国大理召开。将围绕图像处理与多媒体技术、机器学习等在…

RabbitMQ中的Topic模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理&#xff0c;支持多种消息传递模式&#xff0c;其中 Topic 模式 是一种灵活且强大的模式&#xff0c;允许生产者…

C++简明教程(文章要求学过一点C语言)(12)

C 编程命名规范 一、引言 在 C 编程中&#xff0c;采用统一且清晰的命名规范对于代码的可读性、可维护性以及团队协作至关重要。良好的命名能够让代码“自解释”&#xff0c;使其他开发者&#xff08;包括未来的自己&#xff09;能够迅速理解代码的意图和功能&#xff0c;减少…

酷黑金色配色 影片素材不过时 色彩丰富 电影主题html

本套大作业共计8个HTML页面&#xff0c;网页中包含&#xff1a;DIVCSS、下拉菜单栏、banner轮播图、图片放大效果、鼠标滑过效果、视频、小图标及按钮设计、登录注册页等&#xff0c;同时设计了logo&#xff1b;本作品花费大量时间去整理素材&#xff0c;大部分素材均使用Photo…