c++路径之和实例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"c++路径之和实例分析",内容详细,步骤清晰,细节处理妥当,希望这篇"c++路径之和实例分析"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。算法:算法
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
国智互联网科技
互联网与科技金融数据
互联网科技英文
互联网科技创新企业排名
以后互联网后是啥科技
互联网大会黑科技排名
宁夏众和广鑫互联网科技有限公司
武汉健翔互联网络科技有限公司
智腾互联网科技有限公司
苏州铭阳互联网科技有限公司
互联网科技和信息
中国互联网十大科技股排名
广州新华互联网科技学校电竞方面
互联网科技和法律行业
互联网金融科技名词解释
北京市互联网新科技
济南小医互联网科技有限公司招聘
福仕德教育科技互联网
互联网大会出现的黑科技
科技信息互联网
互联网 科技创新
猪兼强互联网科技
唐信互联网科技
美国互联网黑科技
菲比寻常互联网科技
互联网时代科技改变生活
知域互联网科技有限公司大骗子
迪庆互联网科技招生
山东蛋芒互联网科技有限公司