using
System;
public
class
TreeNode {
public
int
val;
public
TreeNode left;
public
TreeNode right;
public
TreeNode(
int
val)
{
this
.val = val;
left =
null
;
right =
null
;
}
public
TreeNode(
int
val, TreeNode left, TreeNode right)
{
this
.val = val;
this
.left = left;
this
.right = right;
}
}
public
class
Solution {
public
bool
dfs(TreeNode node,
int
prev_result,
int
targetSum)
{
if
(node ==
null
) {
return
false
;
}
int
curr_result = prev_result & node.val;
if
(node.left ==
null
&& node.right ==
null
) {
return
curr_result == targetSum;
}
return
dfs(node.left, curr_result, targetSum)
|| dfs(node.right, curr_result, targetSum);
}
public
bool
HasPathSum(TreeNode root,
int
targetSum)
{
return
dfs(root, root.val, targetSum);
}
}
public
class
GFG {
public
static
void
Main(
string
[] args)
{
TreeNode root =
new
TreeNode(7);
root.left =
new
TreeNode(5);
root.right =
new
TreeNode(8);
root.left.left =
new
TreeNode(15);
root.left.right =
new
TreeNode(13);
root.right.left =
new
TreeNode(12);
root.right.right =
new
TreeNode(16);
Solution sol =
new
Solution();
if
(sol.HasPathSum(root, 6)) {
Console.WriteLine(
"True"
);
}
else
{
Console.WriteLine(
"False"
);
}
if
(sol.HasPathSum(root, 5)) {
Console.WriteLine(
"True"
);
}
else
{
Console.WriteLine(
"False"
);
}
}
}