题解 | #二叉树中和为某一值的路径(一)#

二叉树中和为某一值的路径(一)

http://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c

添加队列,用还差多少作为父节点,层层推进
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) {
         if (root == null)
            return false;
        Queue<TreeNode> queue = new LinkedList<>();
        root.val = sum - root.val;
        queue.add(root);
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            //累减到根节点之后,结果为0,说明存在这样一条路径,直接返回true
            if (node.left == null && node.right == null && node.val == 0)
                return true;
            //左子节点累减
            if (node.left != null) {
                node.left.val = node.val - node.left.val;
                queue.add(node.left);
            }
            //右子节点累减
            if (node.right != null) {
                node.right.val = node.val - node.right.val;
                queue.add(node.right);
            }
        }
        return false;
    }
}


全部评论

相关推荐

11-20 15:03
四川大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务