二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值

2024-09-04 02:08

本文主要是介绍二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

给定二叉树和一个数sum,如果从树的根开始到叶节点的值等于sum,则返回true。 如果没有找到这样的路径,则返回false。

这里写图片描述

例如,
在上述树根到叶节点存在具有以下和。

21 - > 10 - 8 - 3
23 - > 10 - 8 - 5
14 - > 10 - 2 - 2

因此,返回的值应该只对数字21,23和14. true。对于任何其他数字,返回值应该为false。

算法:
递归检查左孩子或右孩子的路径总和是否等于(当前节点的数值)


代码


// Java program to print to print root to leaf path sum equal to
// a given number/* A binary tree node has data, pointer to left childand a pointer to right child */
class Node 
{int data;Node left, right;Node(int item) {data = item;left = right = null;}
}class BinaryTree {Node root;/*Given a tree and a sum, return true if there is a path from the rootdown to a leaf, such that adding up all the values along the pathequals the given sum.Strategy: subtract the node value from the sum when recurring down,and check to see if the sum is 0 when you run out of tree.*/boolean haspathSum(Node node, int sum) {if (node == null)return (sum == 0);else{boolean ans = false;/* otherwise check both subtrees */int subsum = sum - node.data;if (subsum == 0 && node.left == null && node.right == null)return true;if (node.left != null)ans = ans || haspathSum(node.left, subsum);if (node.right != null)ans = ans || haspathSum(node.right, subsum);return ans;}}/* Driver program to test the above functions */public static void main(String args[]) {int sum = 21;/* Constructed binary tree is10/  \8     2/ \   /3   5 2*/BinaryTree tree = new BinaryTree();tree.root = new Node(10);tree.root.left = new Node(8);tree.root.right = new Node(2);tree.root.left.left = new Node(3);tree.root.left.right = new Node(5);tree.root.right.left = new Node(2);if (tree.haspathSum(tree.root, sum))System.out.println("There is a root to leaf path with sum " + sum);elseSystem.out.println("There is no root to leaf path with sum " + sum);}
}

这篇关于二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134691

相关文章

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三

Java遍历HashMap的6种常见方式

《Java遍历HashMap的6种常见方式》这篇文章主要给大家介绍了关于Java遍历HashMap的6种常见方式,方法包括使用keySet()、entrySet()、forEach()、迭代器以及分别... 目录1,使用 keySet() 遍历键,再通过键获取值2,使用 entrySet() 遍历键值对3,

判断PyTorch是GPU版还是CPU版的方法小结

《判断PyTorch是GPU版还是CPU版的方法小结》PyTorch作为当前最流行的深度学习框架之一,支持在CPU和GPU(NVIDIACUDA)上运行,所以对于深度学习开发者来说,正确识别PyTor... 目录前言为什么需要区分GPU和CPU版本?性能差异硬件要求如何检查PyTorch版本?方法1:使用命

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa

Python中判断对象是否为空的方法

《Python中判断对象是否为空的方法》在Python开发中,判断对象是否为“空”是高频操作,但看似简单的需求却暗藏玄机,从None到空容器,从零值到自定义对象的“假值”状态,不同场景下的“空”需要精... 目录一、python中的“空”值体系二、精准判定方法对比三、常见误区解析四、进阶处理技巧五、性能优化