本文主要是介绍代码随想录——路径总和(Leetcode112)需要回顾,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接
递归
递归函数什么时候需要返回值?
- 如果需要搜索整棵二叉树且不需要处理递归返回值,递归函数不要返回值
- 如果需要搜索整棵二叉树且需要处理递归返回值,递归函数需要返回值
- 如果搜索其中一条条件的路径,递归一定需要返回值,遇到符合条件的路径需要及时返回
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public boolean traversal(TreeNode root, int count){// 叶子节点 + 计数为0,返回trueif(root.left == null && root.right == null && count == 0){return true;}// 叶子节点,计数不为0,返回falseif(root.left == null && root.right == null){return false;}if(root.left != null){// 递归,处理节点count -= root.left.val;if(traversal(root.left,count)){return true;}// 回溯,撤销处理结果count += root.left.val;}if(root.right != null){count -= root.right.val;if(traversal(root.right,count)){return true;}count += root.right.val;}return false;}public boolean hasPathSum(TreeNode root, int targetSum) {if(root == null){return false;}return traversal(root,targetSum - root.val);}
}
这篇关于代码随想录——路径总和(Leetcode112)需要回顾的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!