求二叉树的深度C语言实现

        在二叉树中,深度是指从根节点到最远叶子节点的最长路径上的边数。求解二叉树的深度通常采用递归的方法,以下便是求二叉树深度的C代码实现:

#include <stdio.h>
// 假设已经定义了二叉树节点结构体
typedef struct BiTreeNode {int data; // 节点数据(这里假设为整型)struct BiTreeNode *left, *right; // 左、右子节点指针
} BiTree;// 函数声明
int Depth(BiTree *T);// 计算二叉树的深度函数
int Depth(BiTree *T) {if (T == NULL) { // 空树的深度为0return 0;} else {// 计算左子树和右子树的深度int left_depth = Depth(T->left);int right_depth = Depth(T->right);// 返回左右子树中的较大深度 + 1(加1是因为包括当前节点)return (left_depth > right_depth) ? (left_depth + 1) : (right_depth + 1);}
}// 示例:创建并初始化一个二叉树,并调用Depth函数计算其深度
int main() {// 创建二叉树的过程在此省略,假设已经有了一个根节点指针rootBiTree *root = ...; // 初始化或通过某种方式得到根节点// 计算二叉树的深度int tree_depth = Depth(root);printf("The depth of the binary tree is: %d\n", tree_depth);return 0;
}

        首先定义一个BiTree结构体来表示二叉树的节点,每个节点包含一个数据域以及指向左右子节点的指针。然后定义了一个名为Depth的函数,该函数接收一个指向二叉树节点的指针作为参数。

Depth函数内部:

  1. 首先检查传入的节点是否为空,若为空则说明到达了叶子节点或者空树,返回深度0。
  2. 若节点不为空,则分别计算左子树和右子树的深度。
  3. 比较左右子树的深度,选择较大的那个值再加1(因为包括当前节点),即为当前子树的最大深度。
  4. 主函数中调用Depth(root)来计算整个二叉树的深度,并将结果输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/602418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

柯桥学韩语【韩语网络用语】听说最近的年轻人都重视슬세권,역세권....吗?

来解锁一下今天的新词“슬세권” 슬리퍼와 세권(勢圈)의 합성어로 슬리퍼와 같은 편한 복장으로 각종 여가편의시설을 이용할 수 있는 주거 권역을 이르는 신조어다. 슬세권是"拖鞋"和"势圈"的合成词&#xff0c;即使穿着像拖鞋类似的便装&#xff0c; …

J2 - ResNet-50v2实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 环境步骤环境设置数据准备图像信息查看 模型设计ResidualBlock块stack堆叠resnet50v2模型 模型训练模型效果展示 总结与心得体会 环境…

网页服务, 静态页面

文章目录 概要demo示例说明 概要 创建微服务时&#xff0c; 可以将静态资源(前端界面)放入resource中&#xff0c; 通过接口来访问 参考博客: https://blog.csdn.net/wangxin1949/article/details/89016428 demo示例 Controller RequestMapping(“/terminal/task”) public…

Sinkhorn:求解方法和Python实现

Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 注&#xff1a;本人笔记 【3种求解方法】 【Python实现】 【dustbin】 【log space】

深度学习中的知识蒸馏

一.概念 知识蒸馏&#xff08;Knowledge Distillation&#xff09;是一种深度学习中的模型压缩技术&#xff0c;旨在通过从一个教师模型&#xff08;teacher model&#xff09;向一个学生模型&#xff08;student model&#xff09;传递知识来减小模型的规模&#xff0c;同时保…

JavaScrip-初识JavaScript-笔记

1. 输出语句 (1) alert(内容)&#xff1a;弹窗的形式输出内容 (2) console.log(内容)&#xff1a;输出在控制台 (3) document.write(内容): 向html文档中写入内容 一般是标签内容 2. 单引号、双引号不能换行 使用模板字符串可以换行 3. 输入语句 prompt(内容) 输入的变…

信息学奥赛一本通1006:A+B问题

1006&#xff1a;AB问题 时间限制: 1000 ms 内存限制: 66536 KB 提交数: 174625 通过数: 137337 【题目描述】 大部分的在线题库&#xff0c;都会将AB问题作为第一题&#xff0c;以帮助新手熟悉平台的使用方法。 AB问题的题目描述如下&#xff1a;给定两个整数A和…

测试:常见的虚拟机命令

ps 虚拟机中的ps命令与在物理机上的ps命令功能相似&#xff0c;都是用来显示当前系统的进程状态。在虚拟机环境中使用ps命令&#xff0c;可以帮助用户查看和管理虚拟机内运行的进程。 在Linux操作系统中&#xff0c;ps命令是一个常用的监控和管理进程的工具。它可以显示进程的…

通过聚道云软件连接器实现钉钉与自研主数据系统的完美融合

客户介绍 某知名高校&#xff0c;拥有数千名教职工&#xff0c;日常管理涉及大量的人员异动信息。该高校设有多个学院和研究所&#xff0c;涵盖了工、理、管、文等多个学科领域。该高校是一所充满活力和潜力的学府&#xff0c;致力于为学生提供优质的教育资源和多元化的学习环…

体系化的进阶学习内容

UWA学堂&#xff1a;传播游戏行业的体系化的进阶学习内容。UWA学堂作为面向开发者的在线学习平台&#xff0c;目前已经上线272门课程&#xff0c;涵盖了3D引擎渲染、UI、逻辑代码等多个模块&#xff0c;拥有完整的学习体系&#xff0c;一直致力于为广大的开发者提供更丰富、更优…

数据结构——堆排序

什么是堆排序 堆排序就是利用堆&#xff08;假设利用大堆&#xff09;进行排序的算法。他的基本思想是&#xff0c;将待排序的序列构造成一个大顶堆。此时&#xff0c;整个序列的最大值就是堆顶的根节点。将他移走&#xff08;其实就是将其与堆数组的末尾元素交换&#xff0c;…

NVIDIA Jetpack6.0DP使用过程中的问题

Jetpack6.0DP是2023年12月才发布&#xff0c; 操作系统使用了ubuntu 22.04&#xff0c; gcc是11.4&#xff0c;版本都很高&#xff0c; 用起来还存在一些问题 无法使用jtop https://forums.developer.nvidia.com/t/jtop-no-longer-works-on-jp-6-0-dp/275215 使用$ sudo -H p…

常用网络接口自动化测试框架

(一&#xff09;GUI界面测试工具&#xff1a;jmeter 1、添加线程组 2、添加http请求 3、为线程组添加察看结果树 4、写入接口参数并运行 5、在查看结果树窗口查看结果 6、多组数据可增加CSVDataSetConfig(添加.csv格式的文件&#xff0c;并在参数值里以${x}格式写入) 此时变量…

条件随机场 (CRF) 的损失函数以及faiss 的原理介绍

1、条件随机场 (CRF) 的损失函数 条件随机场&#xff08;CRF&#xff09;是一种统计建模方法&#xff0c;常用于结构化预测问题&#xff0c;如序列标注、分词和命名实体识别等。在CRF模型中&#xff0c;损失函数用于衡量模型预测的标记序列与真实标记序列之间的差异。CRF的目标…

基于华为云解析服务实现网站区域封禁

前言 中国大陆以外的网络攻击不断&#xff0c;个人博客时常遭受不明个人或组织的攻击&#xff0c;给网站的安全运行带来了巨大的风险&#xff0c;同时DDoS、CC攻击等还会消耗服务器的资源&#xff0c;站长可能需要因此支付高昂的服务器、CDN的流量费用。 因此&#xff0c;如果…

【非关系型数据库】Redis概述及安装、命令使用

目录 前瞻 关系型数据库 非关系型数据库 关系型数据库和非关系型数据库区别 数据存储方式不同 扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 总结 Redis简介 什么是Redis Redis具有的优点 Redis使用场景 哪些数据适合放入缓存中&#xff1f; Redis为什…

JAVAEE初阶相关内容第二十弹--HTTP协议【续集】

写在前&#xff1a;在前一篇博客中我们初步掌握了HTTP(超文本传输协议)的相关知识【点击跳转】&#xff0c;认识了HYYP协议的工作过程&#xff0c;掌握抓包工具Fiddler的使用。在“方法”中重点需要理解“GET”方法与“POST”方法的格式与内容&#xff0c;并了解了请求“报头”…

el-table 展开行表格,展开的内容高度可以变化时,导致的固定列错位的问题

问题描述 一个可展开的表格&#xff08;列设置了type“expand”&#xff09;&#xff0c;并且展开后的内容高度可以变化&#xff0c;会导致后面所有行的固定列错位&#xff0c;图如下&#xff0c;展示行中是一个树形表格&#xff0c;默认不展示子级&#xff0c;点击树形表格的…

彻底解决vue-video-player视频铺满div

需求 最近需要接入海康视频摄像头&#xff0c;然后把视频的画面接入到自己的网站系统中。以前对接过rtsp固定IP的显示视频&#xff0c;这次的不一样&#xff0c;没有了固定IP。海康的解决办法是&#xff0c;摄像头通过配置服务器到萤石云平台&#xff0c;然后购买企业版账号和…

大数据开发-某外包公司

1.用过那些组件 2.说下HDFS读写流程 3.说下varchar和char区别 4.说下数据库的事务 5.spark的部署模式有哪些 6.数据库和数据仓库的区别 7.内部表和外部表的区别 8.说下数据中台、数据仓库和数据湖的区别 9.说下公司的建模模型 10.说下hadoop有那些组件 面试体会&#…