Topic:
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such this adding up all the values along the Path equals the given sum.
For Example:
Given The below binary tree and
sum = 22,
5 / 4 8 / / / 4 / \ 7 2 1
Return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22.
Solving:
Determine if the value of each node in the path from the root node to the leaf node is added equal to the given sum of
In fact, with the pre-order traversal can be, starting from the root node, not a node to determine whether its value is equal to the given sum minus its ancestor value, if it is equal to return true, it is not equal to the current sum minus its own value as a new sum and passed to its own left and right subtree.
Code:
public static Boolean haspathsum (TreeNode root, int sum) {if (root==null)//recursive End condition return false;if (root.left==null& &root.right==null&&sum==root.val)//recursive end condition return true;else {return haspathsum (Root.left, sum-root.val) | | Haspathsum (Root.right, sum-root.val);//Recursive Call} }
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
LeetCode112 pathsum Java