具有最多M个连续节点且值为K的从根到叶子的路径数量

WBOY

WBOY

2023-08-25

1181人浏览

转载

简介

二叉树是一种令人着迷的数据结构,在计算机科学和编程中有着广泛的应用。一个有趣的问题是从给定的由父节点及其子节点组成的树中查找计数。二叉树由节点组成,根节点确定,根节点可以根据用户需要给出子节点。 K值决定,移动方式由M值选择。

根到叶路径的计数

该图是使用各种节点创建的,这些节点保存整数形式的值。本文主要关注从起始节点或根节点到叶子节点或子节点的计数。

示例

该图是从具有各种节点的二叉树创建的。

具有最多m个连续节点且值为k的从根到叶子的路径数量

Unity3D中的线性插值Lerp函数解析 中文WORD版
Unity3D中的线性插值Lerp函数解析 中文WORD版

本文档主要讲述的是Unity3D中的线性插值Lerp()函数解析;在unity3D中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色之间,有需要的朋友可以下载看看

下载
  • 在上面的二叉树中,根节点选择为“8”。

  • 然后创建两个节点,一个值为 3,另一个值为 10,占据根节点的左右位置。

  • 以值为 2 的节点作为根,创建另一个子节点,其值分别为 2 和 1 作为左节点和右节点。

  • 最后,值为 1 的子节点创建值为 -4 的子节点。

方法 1:使用递归函数计算由最多 M 个具有 K 值的连续节点组成的根到叶路径的 C++ 代码

为了有效地解决这个问题,我们将利用树遍历算法和递归等基本概念。

算法

第 1 步:创建一个用于表示树节点的结构,其中包括两个指针(左子节点和右子节点)以及用于存储节点值的整数字段。

第 2 步:设计一个递归函数,从根开始遍历二叉树,同时跟踪当前路径长度(初始化为 0)、连续出现次数(初始设置为 0)、目标值 K,允许的最大连续出现次数 M。

第 3 步:在每个左子树和右子树上递归调用该函数,并传递更新的参数,例如递增的路径长度和连续出现次数(如果适用)。

第4步:对于遍历过程中每个访问过的非空节点:

a) 如果其值等于 K,则将两个变量都加一。

b) 如果其值与 K 不匹配或超过迄今为止在路径中已遇到的 M 连续出现次数,则将变量重置为零。

第5步:在遍历树时,如果子节点在左和右两种情况下的值都为零 - 我们可以用两种方式处理,即

a) 检查变量是否不超过M。

b) 如果是,则将满足条件的路径总数增加 1。

示例

//including the all in one header
#include<bits>
using namespace std;
//creating structure with two pointers as up and down
struct Vertex {
   int data;
   struct Vertex* up;
   struct Vertex* down;
};
//countPaths function declared with five arguments ; with root = end; Node= vertex; left = up; right = down
int countPaths(Vertex* end, int K, int M, int currCount, int 
consCount) {
//To check the condition when the root is equal to 1 and greater than the maximum value, the values is incremented
   if (end == NULL || consCount > M) {
      return 0;
   }
//To check when the root is equal to the K value, increment by 1
   if (end->data == K) {
      currCount++;
      consCount++;
   } else {
//If it is not equal, it will return 0
      currCount = 0;
   }
   if (end->up == NULL && end->down == NULL) {
      if (currCount up, K, M, currCount, consCount) + countPaths(end->down, K, M, currCount, consCount);
}
//Main function to test the implementation
int main() {
   Vertex* end = new Vertex();
   end->data = 8;
   end->up = new Vertex();
   end->up->data = 3;
   end->down = new Vertex();
   end->down->data = 10;
   end->up->up = new Vertex();
   end->up->up->data = 2;
   end->up->down = new Vertex();
   end->up->down->data = 1;
   end->up->down->up = new Vertex();
   end->up->down->up->data = -4;

   int K = 1; // Value of node
   int M = 2; // Maximum consecutive nodes
   int currCount = -1; // Current count
   int consCount = -1; // Consecutive count

   cout 
<h3>输出</h3>
<pre class="brush:php;toolbar:false;">The number of paths obtained from the given graph of 2 nodes with a value of 1 is 3

结论

在本文中,我们探讨了计算从顶部(即叶)到末端或根的路径数的问题。通过使用 C++ 中的树遍历算法和递归技术,可以有效地解决此类问题。遍历二叉树的过程看起来很困难,但通过示例就变得简单了。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

10

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

8

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

5

10

火山引擎域名备案流程详解
火山引擎域名备案流程详解

火山引擎域名备案适合需要在火山引擎云服务器、对象存储、CDN或网站服务上绑定域名的用户参考。本专题整理备案入口、账号实名认证、备案类型选择、主体信息填写、网站信息提交、资料上传、初审核验、管局审核和备案失败排查,帮助用户完成网站上线前的备案流程。

2026.08.04

1

10

火山引擎DNS解析配置步骤
火山引擎DNS解析配置步骤

使用火山引擎DNS解析网站域名时,需要确认域名已完成管理接入,并正确配置服务器IP、CNAME地址或验证记录。本专题整理域名添加、记录类型选择、TTL设置、解析状态检查、备案和访问测试等流程,适合新手搭建网站时参考。

2026.08.04

3

10

火山引擎对象存储使用教程
火山引擎对象存储使用教程

火山引擎对象存储适合用于网站图片、视频文件、备份数据、静态资源和应用附件管理。本专题整理TOS控制台入口、存储桶创建、地域选择、权限设置、文件上传、访问链接生成、CDN加速、费用查看和常见上传或访问失败问题,帮助用户快速掌握对象存储基础操作。

2026.08.04

1

10

火山引擎云服务器使用教程
火山引擎云服务器使用教程

火山引擎云服务器使用教程适合第一次购买、部署和管理云服务器的用户参考。本专题整理控制台入口、实例创建、地域和配置选择、系统镜像设置、安全组放行、远程连接、网站部署、续费计费和常见连接失败问题,帮助用户快速完成云服务器基础使用流程。

2026.08.04

5

10

火山引擎API Key绑定大模型教程
火山引擎API Key绑定大模型教程

火山引擎API Key怎么绑定大模型适合需要在火山方舟、应用后台、脚本工具或AI编程软件中调用模型的开发者参考。本专题整理控制台服务开通、API Key创建、模型权限检查、模型ID选择、Base URL填写、调用测试和鉴权失败排查,帮助用户完成从密钥到模型调用的配置流程。

2026.08.04

2

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Python函数定义官方教程
Python函数定义官方教程

共0课时 | 0人学习

Manus AI 入门手册
Manus AI 入门手册

共0课时 | 0人学习