当前位置: 首页 > article >正文

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

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

(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.kler.cn/a/443251.html

相关文章:

  • 计算机网络之---数据链路层的功能与作用
  • Spring IoC DI 入门 和 使用
  • python【数据结构】
  • 基于springboot的网上商城购物系统
  • Leecode刷题C语言之字符串中最大的3位相同数字
  • 经典多模态模型CLIP - 直观且详尽的解释
  • 软件防查盗版的终结者:服务器防病毒技术
  • C# OpenCV机器视觉:图像旋转(让生活的角度更美好!)
  • Flink2.0未来趋势中需要注意的一些问题
  • bridge between Lua world and the .NET
  • Java学习笔记(13)——面向对象编程
  • 初学stm32 --- 窗口看门狗
  • std::queue的pop操作会调用对象的析构函数
  • @PostConstruct注解解释!!!!
  • 【React前端】大屏适配解决方案从框架结构到实现(超详细)(附代码)
  • Java项目--仿RabbitMQ的消息队列--网络通信协议设计
  • [BJDCTF2020]ZJCTF,不过如此 1
  • gbase8s之常用sql脚本
  • 浅谈单例模式
  • 【AI图像生成网站Golang】项目测试与优化
  • 电脑上怎么运行手机APP(电脑上运行手机APP的4种方法)
  • 深入解析java.lang.NumberFormatException异常及解决方法
  • Ubuntu交换区(Swap)扩容方法
  • linux 查找当前目录下大于10G的目录,并删除它们
  • mac电脑可以使用的模拟器
  • 网络术语MSS/MTU/TSO/Len说明