#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct BiNode
{
char ch;
struct BiNode *lchild; /* 左孩子 */
struct BiNode *rchild; /* 右孩子 */
}BNODE;
/* 计算叶子结点 */
void countLeafNum(BNODE *root, int *num)
{
if (NULL == root)
return;
if (root->lchild == NULL && root->rchild == NULL)
(*num)++;
countLeafNum(root->lchild, num);
countLeafNum(root->rchild, num);
}
/* 计算树的高度 */
int getTreeHeight(BNODE *root)
{
if (root == NULL)
return 0;
/* 执行时先找到叶子结点,然后一层层返回,最后到root */
int lheight = getTreeHeight(root->lchild);
int rheight = getTreeHeight(root->rchild);
int height = (lheight > rheight) ? lheight + 1 : rheight + 1;
return height;
}
void test()
{
BNODE nodeA = { 'A', NULL, NULL };
BNODE nodeB = { 'B', NULL, NULL };
BNODE nodeC = { 'C', NULL, NULL };
BNODE nodeD = { 'D', NULL, NULL };
BNODE nodeE = { 'E', NULL, NULL };
BNODE nodeF = { 'F', NULL, NULL };
BNODE nodeG = { 'G', NULL, NULL };
BNODE nodeH = { 'H', NULL, NULL };
nodeA.lchild = &nodeB;
nodeA.rchild = &nodeF;
nodeB.rchild = &nodeC;
nodeC.lchild = &nodeD;
nodeC.rchild = &nodeE;
nodeF.rchild = &nodeG;
nodeG.lchild = &nodeH;
/* 结算叶子结点 */
int num = 0;
countLeafNum(&nodeA, &num);
printf("叶子结点:%d\n", num);
/* 计算深度 */
num = getTreeHeight(&nodeA);
printf("树的高度:%d\n", num);
printf("********************************\n");
}
int main()
{
test();
system("pause");
return 0;
}
相关推荐
计算二叉树的深度和叶子结点数
【问题描述】 计算二叉树的深度和叶子结点数 【输入形式】 二叉树的先序建立序列。 【输出形式】 二叉树的叶子结点数和深度。
二叉树遍历算法的应用——计算二叉树的深度、计算二叉树的节点总数、计算二叉树的叶子节点数(均采用递归的思想)
//二叉树遍历算法的应用 //1、计算二叉树的深度 int Depth(BitTree T){ if(T==NULL)return 0;//如果是空树,返回0 else{ m=Depth(T->lchild); n=Depth(T->rchild); if(m>n)return m+1; else return n+1; } } //2、计算二叉树节点总数 int NodeCount(BitTree T
计算二叉树叶子结点数和深度的C语言实现
二叉树的定义很直观,它是一种有序树结构,可以为空,也可以由一个根节点和两棵互不相交的称为左子树和右子树的二叉树组成。在二叉树中,每个节点最多有两个子节点,这是它与普通树结构的主要区别之一。在二叉树的理论中,叶子结点是指没有子节点的结点,即它在二叉树结构中处于最末端。它们是二叉树的基础组成部分,具有以下特性:它们是二叉树中没有子结点的结点,也就意味着它们是树的末端。在某些二叉树的操作中,叶子结点被认为是寻找特定路径的终点,例如在二叉搜索树中查找一个元素时,叶子结点代表查找路径的尽头。
递归求二叉树的结点总数及叶子结点总数
这里需要注意叶子结点的定义,即左孩子和右孩子同时为空,同时也需要同时判断左子树以及右子树。
编写递归算法,计算二叉树中叶子结点的数目
编写递归算法,计算二叉树中叶子结点的数目
二叉树的叶子结点数及深度
完整的计算C++二叉树叶子结点数及深度的程序,希望能帮到大家。
二叉树必备各种递归算法(求树的结点数,高度,叶子结点...)
1、求二叉树中的节点个数 递归解法: (1)如果二叉树为空,节点个数为0 (2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1 int NodeNum(BTNode * root) { if(root== NULL) // 递归出口 return 0; return NodeNum(root->lchild) + NodeNum(root->rchild) + 1; } 2、求二叉树的深度 递归解法: (1)如果二叉树为空,二叉
二叉树的建立,遍历及计算叶子节点,深度计算
建立 先序遍历 中序遍历 后续遍历 计算深度 叶子节点数
二叉链树的深度、叶子结点和总结点个数(递归算法)-----数据结构与算法笔记
一、二叉树的深度、叶子结点和总结点个数 参考书(《数据结构(C语言)》–严蔚敏等编著,清华大学出版社); 一、深度、叶子结点和总结点 叶子结点:度为0的节点称为叶子结点; 总结点:二叉树所有节点之和; 深度:树中节点的最大层次称为树的深度; 相关代码: #include "stdio.h" #include "stdlib.h" #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERF
Nginx/OpenResty目录穿越漏洞复现
Nginx/OpenResty目录穿越漏洞复现 漏洞背景: 2020年03月18日, 360CERT监测发现 openwall oss-security 邮件组披露了两枚漏洞。在特定配置下 nginx/openresty 存在 内存泄漏漏洞/目录穿越漏洞。 Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 OpenResty是一个基于nginx的Web平台,它对nginx增加LuaJIT引擎使其运行Lua脚本。 影响版本: nginx <= v1.17
Investigating Bi-Level Optimization for Learning and Vision from a Unified Perspective: A Survey and
文章首先从双层优化的角度统一表示了超参数优化、多任务和元学习等复杂学习和视觉问题,建立了一个基于最佳响应的单层重构和一个统一的算法框架,来制定一个基于梯度的双层优化方法,最后讨论了该框架的潜力和未来研究方向。...
【数据结构】双链表 二叉树 练习记录
双链表结构体:数据域和两个指针域(指向上一个结点和下一个结点)结构体别名:DNode结构体指针别名:DLinklist。
头歌 DNS协议分析第3关----DNS 报文分析
DNS 报文分析
c语言二叉树结点 深度,求二叉树的深度、总结点数和叶子结点数
二叉树的二叉链表的存储结构:typedef char TElemType;typedef struct BiTNode{TElemType data;//数据元素BiTNode * lchild;//指向左孩子BiTNode * rchild;//指向右孩子}BiTNode,* BiTree;一、二叉树的深度如果二叉树为空,结点的深度为0;如果二叉树只有一个结点G为例,其...
从驱动编译到数据传输:RK3588与FPGA的PCIe通信实战解析
本文详细解析了RK3588与FPGA通过PCIe通信的实战过程,涵盖驱动编译、数据传输及性能优化等关键步骤。通过XDMA驱动实现高效DMA传输,适用于视频处理、数据采集等高性能场景,帮助开发者快速掌握嵌入式系统中的PCIe通信技术。
Docker深度详解:从原理到实践的全方位指南
本文深入解析了Docker容器化技术的核心原理与实战应用。主要内容包括:1) Docker核心架构与优势,对比容器与虚拟机的关键差异;2) 企业级部署方案,涵盖离线安装与多镜像源配置;3) 高级镜像构建技术,如参数化构建、缓存优化及安全扫描;4) 容器生命周期管理,包括健康检查、资源限制及数据持久化方案。文章提供了丰富的代码示例和生产级配置建议,如使用Trivy进行安全扫描、精确控制容器资源等技术细节,帮助开发者全面掌握现代容器化技术。
计算二叉树的深度和结点个数
计算二叉树的深度和结点个数以及叶子结点的个数 二叉树的深度呢指的是二叉树中最大的结点层数,这个很好理解的; 而二叉树的结点包含一个数据元素及两个指向子树的分支,叶子结点呢就是树底下没有一个分支的结点; #include <stdio.h> #include <stdlib.h> #include <string.h> #include “binary_tree.h” int GetTreeDepth(BiTree T) // 计算二叉树的深度 // 参数:二叉树根指针T
Ruoyi-Cloud集成Seata2.0实现分布式事务
在网络上,关于Spring Cloud和Ruoyi-Cloud整合Seata的教程有很多,针对不同版本的 Seata 也有不少相关教程。事实上,无论是 Spring Cloud 还是 Ruoyi-Cloud,其整合 Seata 的原理基本相同。这篇博文将详细介绍如何在本地开发环境下,在中实现Seata 2.0的整合,希望能为大家在分布式项目中实现 Seata 的整合提供实用的帮助,提供一个清晰的操作思路。
二叉树的应用(复制二叉树、计算二叉树的深度、计算二叉树的总结点个数、计算叶子结点的个数)
二叉树的应用(复制二叉树、计算二叉树的深度、计算二叉树的总结点个数、计算叶子结点的个数)
【Claude】Extra inputs are not permitted 错误:代理剥离 Beta 标头的解决方案 bug报错已解决
深入分析Claude Code Extra inputs are not permitted 400错误的技术原理,解析代理剥离Beta标头的根因与多种修复方案。
Docker 环境 Playwright MCP 部署全流程指南
Docker部署Playwright MCP全流程指南 本文详细介绍了使用Docker容器化部署Playwright MCP的完整流程,涵盖镜像拉取、容器启动、配置优化和问题排查。主要内容包括: 核心部署步骤:通过官方镜像快速搭建环境,支持自定义端口和数据持久化 关键配置要点:详解网络设置、持久化目录挂载和环境变量配置 服务验证方法:通过日志检查和服务连通性测试确保部署成功 客户端集成:提供VS Code等IDE的配置示例 常见问题解决:针对浏览器启动超时、跨域限制等问题给出解决方案 实战案例:演示自动化爬
二叉树的深度,结点的总个数及叶子结点的个数
二叉树深度思想:如果是空树,深度为0,否则递归计算左子树的深度m,右子树的深度n,二叉树的深度为m,n中最大的那个+1是。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
实现二叉树中度为0、1、2的结点总数,实现二叉树的深度、创建二叉树
此文章主要是实现之前两篇文章中涉及的关于二叉树的一些算法、之前零散的算法知识难以将二叉树的一些知识算法贯穿起来,通过简单实现二叉树有助于理解算法含义、加深印象 之前的算法描述请看: 二叉树遍历算法的应用 先、中、后序遍历 下面是算法的实现结果 其程序如下: 在这里插入代码片 ...
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
数据结构——二叉树的其他算法(复制、求深度、求结点数等)
1.完整代码 #include<iostream> #include<malloc.h> using namespace std; #define TElemType int #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct BiTNode{ TElemType data; struct BiTNode *lch
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
二叉树的基本性质(链表和顺序存储的转换,结点个数,叶子结点个数,复制,删除)
二叉树的基本性质详解及完整实现代码
104. 二叉树的最大深度
一道简单题,但是错几次,感觉很有价值,便记了下来。
2887



被折叠的 条评论
为什么被折叠?



