计算一棵二叉树的单分支数(c语言代码实现)

news2024/11/24 1:31:45

本题代码如下

int num(tree t)
{
	if (!t)
		return 0;
	else if ((t->lchild && t->rchild==NULL)|| (t->lchild==NULL&& t->rchild))//计算单支树
		return num(t->lchild) + num(t->rchild) + 1;
	else return num(t->lchild) + num(t->rchild);
}

完整测试代码如下

#include<stdio.h>
#include<stdlib.h>
typedef struct treenode {
	char data;
	struct treenode* lchild, * rchild;
}treenode, * tree;
void buildtree(tree* t)//建树
{
	char ch;
	ch = getchar();
	if (ch == '#')
		t = NULL;
	else
	{
		*t = (treenode*)malloc(sizeof(treenode));//分配空间
		(*t)->data = ch;
		(*t)->lchild = NULL;
		(*t)->rchild = NULL;
		buildtree(&((*t)->lchild));
		buildtree(&((*t)->rchild));
	}
}
int num(tree t)
{
	if (!t)
		return 0;
	else if ((t->lchild && t->rchild==NULL)|| (t->lchild==NULL&& t->rchild))//计算单支树
		return num(t->lchild) + num(t->rchild) + 1;
	else return num(t->lchild) + num(t->rchild);
}
int main() {
	tree t;
	buildtree(&t);
	printf("该二叉树中有%d个单分支\n", num(t));
	return 0;
}

测试:ABD##E##CF###

/*        A
    B        C
D      E   F

*/

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

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

相关文章

自制数据集:点云变化

代码 在干净的点云数据集中加入噪声时&#xff0c;由于不同点云的尺寸不同&#xff0c;很难控制噪声的幅度。为此&#xff0c;需要将所有点云变换到 [ − 0.5 , 0.5 ] 3 [-0.5,0.5]^3 [−0.5,0.5]3的空间当中。下面是一种将点云数据集中的所有点云变换到 [ − 0.5 , 0.5 ] 3 […

git命令行操作

git remote update origin --prune 更新本地的git分支保持和远程分支一致 git clone -b develop XXX 拉取某个分支的代码 1、创建一个空文件夹&#xff0c;在其中打开Git Bash Here&#xff0c;输入&#xff1a; git clone 刚刚复制的粘贴过来&#xff0c;回车 2、打开你拉下…

ArcGIS Pro设置谷歌影像(无水印)

1 打开软件&#xff0c;命名工程文件&#xff0c;底图&#xff08;Basemap&#xff09;选择【天地图】。 2 点击【视图&#xff08;View&#xff09;】——>【目录面板&#xff08;Catalog pane&#xff09;】&#xff0c;在【门户&#xff08;Portal&#xff09;】中搜索【…

20231107-前端学习炫酷菜单效果和折叠侧边栏

炫酷菜单效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>炫酷菜单效果</title><…

【达梦数据库】学习笔记

【达梦数据库】学习笔记 【一】如何使用idea连接达梦数据库【二】idea项目导入本地的达梦数据库驱动jar包&#xff08;方法一&#xff09;【三】idea项目把本地的达梦数据库驱动jar包安装到本地仓库&#xff08;方法二&#xff09; 【一】如何使用idea连接达梦数据库 &#xf…

[LeetCode]-138. 随机链表的复制

目录 题目 解题步骤 1.拷贝节点插入原节点的后面 2.置每个拷贝节点random 3.拷贝节点解下来&#xff0c;尾插到一起&#xff0c;恢复原链表 完整代码 题目 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表…

无人机红外相机的畸变矫正

在项目开展过程中&#xff0c;发现大疆M30T的红外相机存在比较明显的畸变问题&#xff0c;因此需要对红外图像进行畸变矫正。在资料检索过程中&#xff0c;发现对红外无人机影像矫正的资料较少&#xff0c;对此&#xff0c;我从相机的成像原理角度出发&#xff0c;探索出一种效…

Web前端—CSS高级(定位、高级技巧、CSS修饰属性、综合案例:购物网站轮播图)

版本说明 当前版本号[20231108]。 版本修改说明20231107初版20231108对知识点&#xff08;圆点&#xff09;进行补充 目录 文章目录 版本说明目录day08-CSS高级01-定位相对定位绝对定位定位居中固定定位堆叠层级 z-index定位总结 02-高级技巧CSS精灵案例-京东服务HTML结构CS…

Helix Toolkit:为.NET开发者带来的3D视觉盛宴

推荐一个基于.Net开源的3、功能强大的3D图形库和工具包&#xff0c;适用于WPF应用程序的3D渲染和开发。 01 项目简介 Helix Toolkit是一个开源的3D库&#xff0c;主要用于WPF应用程序。它有许多优点&#xff0c;例如提供各种各样的功能&#xff0c;包括基于MVVM的3D模型编辑器…

Python---ljust()--左对齐、rjust()--右对齐、center()--居中对齐

作用&#xff1a;返回原字符串左对齐、右对齐以及居中对齐&#xff0c;不足的使用 指定字符 进行填充。 ljust 左对齐 rjust 右对齐 center 居中对齐 类似于Excel、Word文档中的对齐。 基本语法&#xff1a; 字符串序列.ljust(长度, 填充字符) 案例&#xff1a; …

[100天算法】-搜索旋转排序数组(day 64)

题目描述 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转&#xff08;例如&#xff0c; [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] &#xff09;。请你在数组中搜索 target &#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否…

【黑马程序员】SpringCloud——Eureka

文章目录 前言一、提供者与消费者1. 服务调用关系 二、远程调用的问题三、eureka 原理分析1. eureka 的作用 四、Eureka 案例1. 搭建 eureka 服务1. 服务注册1.1 注册 user-service1.2 启动 user-service3. order-service 完成服务注册 3. 服务发现1. 在 order-service 完成服务…

数据库约束及增删改查(CRUD)进阶-MySQL

文章目录 一、数据库约束1.1 约束类型1.2 NULL约束1.3 UNIQUE&#xff1a;唯一约束1.4 DEFAULT&#xff1a;默认值约束1.5 PRIMARY KEY&#xff1a;主键约束1.6 FOREIGN KEY&#xff1a;外键约束1.7 CHECK 约束&#xff08;了解&#xff09; 二、表的设计2.1 一对一2.2 一对多2…

极智AI | Whole-Body Multi-Person人体姿态估计之AlphaPose

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 Whole-Body Multi-Person人体姿态估计之AlphaPose。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq Whole-Body、…

制造业供应链管理详解

一、什么是制造业供应链管理&#xff1f; 供应链管理是一种对供应链进行战略性管理和协调的方法&#xff0c;它旨在优化供应链的运作&#xff0c;以提高效率和竞争力。在制造业中&#xff0c;供应链管理主要涉及从原材料采购到最终产品交付的整个过程&#xff0c;包括生产、物…

小甲鱼python零基础入门学习(一)

目录 一、环境搭建和课程介绍 &#xff08;1&#xff09;安装最新版本的python3.x &#xff08;2&#xff09;安装编辑器&#xff08;找合适自己的&#xff09; 二、用python设计第一个游戏 三、变量和字符串 &#xff08;1&#xff09;变量 &#xff08;2&#xff09;字…

【Redis】Redis整合SSMRedis注解式缓存Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)

目录&#xff1a; 目录 一&#xff0c;SSM整合redis 二&#xff0c;redis注解式缓存 三&#xff0c;Redis中的缓存穿透、雪崩、击穿的原因以及解决方案&#xff08;附图&#xff09; 一&#xff0c;SSM整合redis 1.原因&#xff1a; 整合SSM和Redis可以提升系统的性能、可…

力扣每日一题 ---- 2918. 数组的最小相等和

贪心题(吐槽一下&#xff0c;最烦贪心题了&#xff0c;每次遇到没见过的就只能连蒙带骗) 好在本题比较容易发现 数组1 &#xff1a;3 2 0 1 0 数组2 &#xff1a;6 5 0 我们遇到这种题&#xff0c;先将小的凑成相同的&#xff0c;(我们预处理出来两个数组的分别的元素和和0的个…

【单链表】无头单项不循环(1)

目录 单链表 主函数test.c test1 test2 test3 test4 头文件&函数声明SList.h 函数实现SList.c 打印SLPrint 创建节点CreateNode 尾插SLPushBack 头插SLPushFront 头删SLPopBck 尾删SLPopFront 易错点 本篇开始链表学习。今天主要是单链表&OJ题目。 单链…

c++对接CAT1400

最近工作中遇到需要对接1400协议,网上搜索不到c/c++的实现,所以记录一下自己的实现。 第一步注册: 1400是在http摘要认证的基础上做的,所以要去了解http摘要认证的流程 说明: 1.视图库通过用户分配,手动分配username,password给三方对接程序 2.三方对接程序第一次请求由…