c++路径之和实例分析
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本文小编为大家详细介绍"c++路径之和实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"c++路径之和实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。算法:算法
千家信息网最后更新 2025年12月02日c++路径之和实例分析
本文小编为大家详细介绍"c++路径之和实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"c++路径之和实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
算法:
算法采用递归,核心在于如何找到递归的终止条件,具体步骤如下:
1.采用递归的方式,sum的数值要随着遍历过的节点做递减操作,sum = sum-root.Val2.递归的终止条件sum==0是其中之一,如果要求是叶子节点的也需要加上
题目1:路径总和
代码实现:
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func hasPathSum(root *TreeNode, sum int) bool { if root == nil { return false } // 叶子节点的判断,排除非叶子节点==sum的情况 if root.Left == nil && root.Right == nil { return sum == root.Val } res := sum - root.Val if hasPathSum(root.Left,res) { return true } if hasPathSum(root.Right,res) { return true } return false}题目2:路径总和2
代码实现:
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */var res [][]intfunc pathSum(root *TreeNode, sum int) [][]int { res = [][]int{} // 为了清空 res 上次的数值 if root == nil { return nil } // var res [][]int var tmp []int dfs(root,sum,tmp) return res}func dfs(root *TreeNode, sum int, tmp []int) { if root == nil { return } tmp = append(tmp,root.Val) if sum == root.Val && root.Left == nil && root.Right == nil { r := make([]int, len(tmp)) // 防止tmp对应的共享内容被修改 copy(r, tmp) res = append(res, r) return } dfs(root.Left,sum-root.Val,tmp) dfs(root.Right,sum-root.Val,tmp) return }题目3:路径总和3
代码实现:
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func pathSum(root *TreeNode, sum int) int { if root == nil { return 0 } result := countPath(root,sum) result += pathSum(root.Left,sum) result += pathSum(root.Right,sum) return result}func countPath(root *TreeNode, sum int) int { if root == nil { return 0 } count := 0 res := sum - root.Val if res == 0 { count = 1 } return count + countPath(root.Left,res) + countPath(root.Right,res)}/*以当前节点作为头结点的路径数量以当前节点的左孩子作为头结点的路径数量以当前节点的右孩子作为头结点的路径数量*/读到这里,这篇"c++路径之和实例分析"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
路径
节点
递归
之和
实例
实例分析
c++
分析
代码
内容
叶子
总和
数量
文章
结点
题目
孩子
数值
条件
步骤
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术月收入多少
世界各国化学品法规数据库
浙江手机软件开发需要多少钱
fanbook怎么退出服务器
数据库encryptKey
军旅网络安全宣传周
网络安全自学在哪里报名
运行数据库必须用管理员权限吗
江苏运营软件开发成本
现代科技与互联网
蓝装网络技术有限公司
服务器能家用吗
学生网络安全知识作文
问道手游客服服务器人数
如何查看数据库中表的索引
怎么添加数据库账户和密码
工信部网络安全产业发展联盟
软件开发项目怎么操作
厦门易佳缘网络技术有限公司
闵行区文件存储服务器
json数据库 csv文件
网络安全产业 杭州
数据库原理概论论文
江苏分布式服务器云主机
淄博应用软件开发公司
数据库课程实验实习课程设计报告
mysql数据库连接中文
胶州管理系统软件开发解决方案
网络安全缩口工作
2029网络安全大会