描述
给定一个二叉树root和一个值 sum ,判断是否有从根节点到叶子节点的节点值之和等于 sum 的路径。
1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点
2.叶子节点是指没有子节点的节点
3.路径只能从父节点到子节点,不能从子节点到父节点
4.总节点数目为n
利用DFS方法遍历二叉树,并将经过节点及其和值存储在栈中,符合条件则输出。
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
public boolean hasPathSum (TreeNode root, int sum) {
// write code here
if (root==null) return false;
Stack<TreeNode> nodestack=new Stack<>();
Stack<Integer> valuestack=new Stack<>();
nodestack.push(root);
valuestack.push(root.val);
while(!nodestack.isEmpty())
{
TreeNode node=nodestack.pop();
int value=valuestack.pop();
if(node.left==null && node.right==null)
{
if (value==sum) return true;
}
else{
if(node.right!=null)
{
nodestack.push(node.right);
valuestack.push(node.right.val+value);
}
if(node.left!=null)
{
nodestack.push(node.left);
valuestack.push(node.left.val+value);
}
}
}
return false;
}
}