数据结构 | c++编程实现求二叉树的叶节点的个数。(递归非递归)
目录
非递归
递归
非递归
#include<iostream>
#include<stack>
using namespace std;
struct BTNode
{int data;BTNode* left, * right;BTNode(int val) :data(val), left(NULL), right(NULL) {}};
//递归的方式求二叉树的叶子结点数
int countnode(BTNode* t) //采用int类型而非bool类型 bool类型最后只有0和1
{if (t == NULL)return 0;stack<BTNode*>s1, s2; //两个栈一个存放临时节点,一个存放应经找到的叶子结点s1.push(t); //将根节点放入栈中bool flag = false; //用来标识有无叶子结点while (!s1.empty()){BTNode* node = s1.top();//取栈顶元素s1.pop();if (node->left == NULL && node->right == NULL){s2.push(node);flag = true; //有叶子结点 标识变true}else{if (node->left != NULL) //根节点的哪边不为空就把它塞到s1这个栈里面 {s1.push(node->left);}if (node->right != NULL){s1.push(node->right);}}}int count = 0;while (!s2.empty()){count++;s2.pop();}return flag ? count : 0;
}
int main()
{BTNode* root = new BTNode(1);root->left = new BTNode(2);root->right = new BTNode(3);root->left->left = new BTNode(4);root->left->right = new BTNode(5);root->right->left = new BTNode(6);root->right->right = new BTNode(7);cout << "叶子结点个数:" << countnode(root) << endl;return 0;
}
递归
#include<iostream>
#include<stack>
using namespace std;
struct BTNode
{int data;BTNode* left, * right;BTNode(int val):data(val),left(NULL),right(NULL){}};
//递归的方式求二叉树的叶子结点数int countnode( BTNode* t) //采用int类型而非bool类型 bool类型最后只有0和1
{if (t == NULL)return 0;if (t->left == NULL && t->right == NULL){return 1;}return (countnode(t->left) + countnode(t->right)); //递归调用函数求解根节点左孩子的叶子结点和右孩子的叶子结点
}
int main()
{BTNode* root = new BTNode(1);root->left = new BTNode(2);root->right = new BTNode(3);root->left->left = new BTNode(4);root->left->right = new BTNode(5);root->right->left = new BTNode(6);root->right->right = new BTNode(7);cout << "叶子结点个数:" << countnode(root) << endl;return 0;
}
相关文章:
数据结构 | c++编程实现求二叉树的叶节点的个数。(递归非递归)
目录 非递归 递归 非递归 #include<iostream> #include<stack> using namespace std; struct BTNode {int data;BTNode* left, * right;BTNode(int val) :data(val), left(NULL), right(NULL) {}}; //递归的方式求二叉树的叶子结点数 int countnode(BTNode* t) …...
python读取csv文件
在Python中,你可以使用pandas库来读取CSV文件。以下是一个基本的例子: import pandas as pd# 读取CSV文件data pd.read_csv(filename.csv)# 显示前几行数据print(data.head()) 这里,filename.csv应该被替换为你的CSV文件的实际路径和名称。…...
租一台服务器多少钱决定服务器的价格因素有哪些
租一台服务器多少钱决定服务器的价格因素有哪些 大家好我是艾西,服务器这个名词对于不从业网络行业的人们看说肯定还是比较陌生的。在21世纪这个时代发展迅速的年代服务器在现实生活中是不可缺少的一环,平时大家上网浏览自己想要查询的信息等都是需要服…...
深度学习(生成式模型)——ADM:Diffusion Models Beat GANs on Image Synthesis
文章目录 前言基础模型结构UNet结构Timestep Embedding关于为什么需要timestep embedding global attention layer 如何提升diffusion model生成图像的质量Classifier guidance实验结果 前言 在前几篇博文中,我们已经介绍了DDPM、DDIM、Classifier guidance等相关的…...
Ubuntu无法解析域名DNS指向127.0.0.53问题处理
用nslookup 域名.com返回127.0.0.53无法解析错误 error"Could not lookup srv records on xxx.com: lookup xxx.com on 127.0.0.53:53: no such host" #首次尝试编辑/etc/resolved.conf文件DNS为8.8.8.8 或1.1.1.1 发现reboot重启后又恢复到127.0.0.53的内容#再次尝…...
Intewell-Hyper I_V2.0.0_release版本正式发布
新型工业操作系统_Intewell-Hyper I_V2.0.0_release版本正式发布 软件发布版本信息 版本号:V2.0.0 版本发布类型:release正式版本 版本特点 1.建立Intewell-Hyper I基线版本 版本或修改说明 基于Intewell-Lin V2.3.0_release版本: 1.Devel…...
Mysql mybatis 语法示例
service package com.ruoyi.goods.service;import java.util.List; import com.ruoyi.goods.domain.GoodsProducts;/*** 商品Service接口* * author ruoyi* date 2023-08-27*/ public interface IGoodsProductsService {/*** 查询商品* * param ProductID 商品主键* return 商…...
第77讲:二进制方式搭建MySQL数据库5.7版本以及错误日志管理
二进制方式搭建MySQL数据库5.7版本 前面是使用的yum的方式安装的MySQL数据库,在企业生产环境中大多数都用二进制方式安装。 本次使用二进制方式搭建MySQL 5.7.36版本。 1.二进制安装MySQL5.7版本 1.1.下载MySQL5.7版本的二进制文件 [root@mysql ~]# wget https://downloads.…...
R语言,table()函数实现统计每个元素出现的频数+并将最终统计频数结果转换成dataframe数据框形式
在 R中,要统计dataframe数据框中每个元素出现的频数,可以使用table()函数。以下是一个示例: 目录 一、创建数据 二、统计第一列每个元素出现的频数 三、统计第二列每个元素出现的频数 四、将频数结果转换为数据框,并改列名 一…...
微信小程序uniapp记住密码
记住密码功能 在请求登录接口成功后,我们需要判断用户是否勾选记住密码,如果是,则将记住密码状态、账号信息存入本地。 下次登录时,获取本地的记住密码状态,如果为true则获取本地存储的账号信息,将信息回填…...
喜报!Coremail荣获2023信创“大比武”优秀生态融合奖
近期,2023信创“大比武”金融业务创新应用赛道(简称金融赛道)活动正式落下帷幕。经过赛程的层层考核,中泰证券股份有限公司(简称“中泰证券”)与Coremail联合组成的“中泰证券CACTER邮件安全保卫队”最终在…...
知识库SEO:提升网站内容质量与搜索引擎排名的策略
随着搜索引擎算法的不断更新和优化,单纯依靠关键词堆砌和外部链接的时代已经过去。现在的SEO(搜索引擎优化)已经转向了以提供高质量、有价值内容为核心的阶段。知识库SEO便是这个新阶段的重要策略之一。 | 一、知识库SEO的概念与意义 1.定义…...
GPIO复用时5个调试接口引脚要注意
一、JTAG引脚作为GPIO使用要注意 例如PA15引脚,它默认时JTDI引脚,但是可以复用为SPI的NSS片选信号。在初始化时,需要先开启AFIO时钟,再关闭JTAG功能,否则GPIO功能仍然不起作用。初始化代码如下: stm32f10…...
华为云CodeArts Check常见问答汇总
1.【Check】如何查看代码检查的历史记录呢? 答:当前支持查看代码检查日志的历史记录,具体操作步骤: 1、进入代码检查页面,在任务列表中,单击任务名称。 2、进入“代码检查详情”页面,选择“…...
linux 应用开发笔记---【信号:基础】
1.基本概念 信号是发生事件时对进程的通知机制,也可以称为软件中断 信号的目的是用来通信的 1.硬件发生异常,将错误信息通知给内核,然后内核将相关的信号给相关的进程 2.在终端输入特殊字符产生特殊信号 3.进程调用kill()将任意信号发送…...
区块链:改变世界的技术
一、引言 区块链,这个曾经看似神秘且遥不可及的词语,如今已经深入人心,成为我们生活的一部分。它以其独特的去中心化、分布式、不可篡改的特性,正在改变我们的生活方式,甚至改变我们的思维方式。本文将深入浅出地解释…...
防御升级!SMC2助力企业高效应对邮箱安全挑战
根据Coremail邮件安全人工智能实验室(以下简称AI实验室)的监测数据显示,2023年Q3全国企业级用户遭受无差别的暴力破解攻击次数虽相比2022年同期有所下降,但仍高达 24.2 亿次,且暴力破解攻击次数有明显回升趋势。 面对正…...
19.(vue3.x+vite)v-if和v-for哪个优先级更高
前端技术社区总目录(订阅之前请先查看该博客) v-if和v-for哪个优先级更高 (1)实践中不应该把v-for和v-if放一起,可以包一层template (2)在vue2中,v-for的优先级是高于v-if (3)在vue3中,v-for的优先级是低于v-if 组件代码 <template><div><!--包一…...
12. IO
1.File类 • File 类代表与平台无关的文件和目录。 • File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 1).File的常用方法 在这里插入图片描述 2).遍历给定目录所有文件 …...
【稳定检索|投稿优惠】2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024)
2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024) 2024 International Conference on Art Appreciation and Social Science Education(ICAASSE) 一、【会议简介】 2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024),这场学术盛宴,将于2024年2月1…...
Three.js可视化开发:用辅助类打造交互式3D教学演示
Three.js可视化开发:用辅助类打造交互式3D教学演示 在数字化教育蓬勃发展的今天,3D可视化技术正在彻底改变传统教学模式。想象一下,当学生能够亲手旋转分子结构、观察物理碰撞的实时模拟,或是探索历史建筑的立体空间关系时&#x…...
YOLOv13开箱即用镜像体验:简单几步,完成你的第一个AI检测项目
YOLOv13开箱即用镜像体验:简单几步,完成你的第一个AI检测项目 1. 为什么选择YOLOv13官版镜像? 1.1 传统部署的痛点 在目标检测领域,YOLO系列一直是开发者的首选。但传统部署方式往往让人望而却步: 环境配置复杂&am…...
Ubuntu 22.04/20.04 RTX 3050显卡驱动安装避坑指南:从黑屏/dev/***到成功点亮
1. 为什么你的RTX 3050在Ubuntu上会黑屏? 刚给Ubuntu装上RTX 3050显卡,重启后屏幕一片漆黑,只显示/dev/***: clean之类的信息?这场景我太熟悉了——去年给工作室六台Ubuntu工作站装RTX 30系显卡时,每台都经历过这个&qu…...
PDF-Parser-1.0零售业应用:促销海报信息提取
PDF-Parser-1.0零售业应用:促销海报信息提取 1. 引言 零售行业的促销活动总是让人又爱又恨。爱的是能带来销量增长,恨的是每次活动都要处理海量的促销海报——设计、印刷、分发,最后还要手动录入成千上万的商品信息、价格数据和活动规则。一…...
[技术解析]BetterJoy:Switch手柄电脑适配的原理与实战指南
[技术解析]BetterJoy:Switch手柄电脑适配的原理与实战指南 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.…...
Excel 修改单元格值的内核操作原理
你现在直接看穿了 Excel 的底层本质!你说的 100% 正确!而且是最底层、最硬核、最真实的原理!我给你用最直白、最硬核、程序员视角完整还原一遍,你马上彻底通透:🔥 终极结论(你说的完全对&#x…...
MediaPipe人体骨骼检测:零配置Web应用,上传图片秒出骨架图
MediaPipe人体骨骼检测:零配置Web应用,上传图片秒出骨架图 1. 引言:一键式骨骼检测的便捷体验 想象一下这样的场景:健身教练需要快速分析学员的动作姿势,医生希望直观展示患者的骨骼姿态,或者动画师需要参…...
06_gstack发布运营:一键发布与文档同步机制
06_gstack发布运营:一键发布与文档同步机制关键字:gstack、一键发布、ship技能、document-release、文档同步、发布流水线、CHANGELOG、PR自动化、retro、工程回顾你上一次修改完代码到实际提交 PR,中间经历了多少步? git stash&a…...
LM358运放实战:手把手教你搭建电容传感器测量电路(附常见问题排查)
LM358运放实战:手把手教你搭建电容传感器测量电路(附常见问题排查) 在电子设计领域,电容式传感器因其非接触式测量、结构简单和成本低廉等优势,被广泛应用于液位检测、接近开关和湿度测量等场景。而要将微弱的电容变化…...
Python多解释器冷启动优化:从2.1s到87ms的极致压缩术(附可复用的预热调度器)
第一章:Python多解释器冷启动优化:从2.1s到87ms的极致压缩术(附可复用的预热调度器) 在微服务与Serverless场景中,Python多解释器(如PyO3、subinterpreters或进程级隔离)常因模块导入、C扩展初始…...
