树的递归遍历

news/2024/10/16 0:18:20

数据结构

树--递归遍历

image

/****************************************************************************** function name     :BinaryTree_CountNode* function          : 计算一颗二叉树的所有节点的数量,可以采用递归实现* parameter         :*                    @root*                  * Return results    : 返回成功或者失败。* note              : None* author            : tongyaqi1110@163.com* date              : 2024-04-30* version           : V1.0* revision history  : None*****************************************************************************/
#include<stdio.h>
//计算一颗二叉树的所有节点的数量,可以采用递归实现
int BinaryTree_CountNode(Tnode_t *root)
{int n1,n2; //n1用于记录左子树的节点,n2用于记录右子树的节点//递归函数先提前写好终止条件if (NULL == root){return 0;}//假设采用后序遍历来计算二叉树的节点数量n1 = BinaryTree_CountNode(root->lchild);n2 = BinaryTree_CountNode(root->rchild);return n1+n2+1;}

image

/****************************************************************************** function name     : BinaryTree_CountLeafNode* function          : 计算一颗二叉树的所有叶子节点的数量,可以采用递归实现* parameter         :*                    @root*                  * Return results    : 返回成功或者失败。* note              : None* author            : tongyaqi1110@163.com* date              : 2024-04-30* version           : V1.0* revision history  : None*****************************************************************************/#include<stdio.h>
//计算一颗二叉树的所有叶子节点的数量,可以采用递归实现
int BinaryTree_CountLeafNode(Tnode_t *root)
{int n1,n2; //n1记录左子树叶子节点,n2记录右子树叶子结点//1.递归函数必须提前写好终止条件if (NULL == root){//说明是空树,则直接返回0return 0;}else if(root->lchild == NULL && root->rchild == NULL){//说明只有一个根节点,则根节点就是叶子节点return 1;}else{//说明是有子树的二叉树,则需要计算左子树的叶子节点和右子树的叶子节点n1 = BinaryTree_CountLeafNode(root->lchild);n2 = BinaryTree_CountLeafNode(root->rchild);}return n1+n2;
}

image

/****************************************************************************** function name     : BinaryTree_CountLeafNode* function          : 计算一颗二叉树的所有叶子节点的数量,可以采用递归实现* parameter         :*                    @root*                  * Return results    : 返回成功或者失败。* note              : None* author            : tongyaqi1110@163.com* date              : 2024-04-30* version           : V1.0* revision history  : None*****************************************************************************///计算一颗二叉树的深度,可以采用递归实现
int BinaryTree_GetDepth(Tnode_t *root)
{int n1,n2;//n1记录左子树的深度,n2记录右子树的深度//1.递归函数必须提前写好终止条件if (NULL == root){//说明是空树,则返回0return 0;}else{//说明是子树的二叉树,则分别计算左子树和右子树,取最大n1 = BinaryTree_GetDepth(root->lchild);n2 = BinaryTree_GetDepth(root->rchild);}return ( (n1>n2)?n1:n2) + 1;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

二叉树(数据结构)——利用“递归”思想实现相关算法问题

题目一//计算一颗二叉树的所有节点的数量,可以采用递归实现 int BinaryTree_CountNode(Tnode_t *root) {int n1,n2; //n1用于记录左子树的节点,n2用于记录右子树的节点//递归函数先提前写好终止条件if (NULL == root){return 0;}//假设采用后序遍历来计算二叉树的节点数量n1 =…

sqlilabs通关04-挑战篇:less54-

通过 SQL 注入工具 sqlilabs 的挑战 54 到 57,使用不同的闭合符号进行注入尝试,并成功获取数据库版本、表名、列名和数据记录。less54 ​​提示的大致意思是:如果你不能在十次内注入成功,那么,表名、列名、数据就会刷新。需要先在url中传递id参数进行注入尝试,然后获得密…

关于tomcat在idea上的中文编码问题

关于tomcat在idea上的中文编码问题;在国内,无论是新手还是有一定码龄的开发人员,汉字编码问题一直都是绕不开的魔咒,本文主要对tomcat在jetbrain系列产品idea上的乱码问题提供解决经验。一、问题引入 在国内,无论是新手还是有一定码龄的开发人员,汉字编码问题一直都是绕不…

Python批处理:文件操作

一、为什么要使用python处理文件 文件处理管理可分为两种,一种是可视化、手动化,学习成本低,处理数量有限。另一种是编程化、自动化,有一定学习成本,可以基于逻辑处理。计算机的常项是对既定规则的发挥,这个发挥作用于"批量"这个层面。 二、相对路径与绝对路径…

开源相机管理库Aravis例程学习(六)——camera-features

本文针对官方例程中的:04-camera-features做简单的讲解目录简介例程代码函数说明arv_camera_get_integerarv_camera_get_string 简介 本文针对官方例程中的:04-camera-features做简单的讲解。并介绍其中调用的arv_camera_get_integer,arv_camera_get_string。 aravis版本:0…

sqlilabs通关02-中级篇:less23-37

less23:注释符绕过 先看代码 ​​可以看到对字符进行替换,将 #号和--替换成了空通过sql语句,可以知道闭合符号是单引号然后就可以开始尝试了,由于这关是get,直接修改url的参数即可 ?id=1 #正常访问 #绕过 ?id=1 and 1=1 ?id=1 and sleep(3)%20 and%20 1=1 #说明可以使…

中国39个行业产业链全景图

找了很久的各个行业产业链,今天终于发现这个整理得非常好的39个行业产业链全景图。主要行业基本都在里面了,每个行业上下游产业都包括哪些一张图你就看明白了! 新能源汽车产业链全景 机器人产业链全景图 房地产产业链全景图 稀土产业链全景图 电子竞技产业链全景图 钛白粉产…

Lettuce 实战之连接超时问题

问题 使用lettuce作为redis连接池,在访问redis时,偶尔会抛出RedisCommandTimeoutException,但隔一会儿又好了。 为什么lettuce有自动重连机制,却还是会出现连接超时的问题?为什么lettuce在连接断掉后,没有立即重连,而是需要等待十多分钟才重新连接? 在lettuce client和…