首页 > 其他 > 详细

112. 路径总和

时间:2021-04-12 18:09:23      阅读:28      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 技术分享图片

 

 

 

 使用广度优先

使用2个队列,一个纪录树的节点,一个纪录节点对应的值

时间O(n)(每个节点都被访问一遍),空间O(n)(叶子节点最多为平衡二叉树情况下n/2)

    public boolean hasPathSum(TreeNode root, int targetSum) {
        if (root==null) return false;
        Deque<TreeNode> queue1 = new LinkedList<TreeNode>();
        Deque<Integer> queue2 = new LinkedList<Integer>();
        queue1.add(root);
        queue2.add(root.val);
        while(!queue1.isEmpty()){
            TreeNode tempNode = queue1.poll();
            int temp = queue2.poll();
            // 注意题目要求,根节点到叶子节点的距离,不是叶子节点则不满足要求
            if (tempNode.left==null && tempNode.right==null){
                if (temp==targetSum){
                    return true;
                }
                continue;
            }
            // 依次将左右孩子压入队列中
            if (tempNode.left!=null){
                queue1.add(tempNode.left);
                queue2.add(tempNode.left.val+temp);
            }
            if (tempNode.right!=null){
                queue1.add(tempNode.right);
                 queue2.add(tempNode.right.val+temp);
            }
        }
        return false;
    }

 

112. 路径总和

原文:https://www.cnblogs.com/jchen104/p/14648194.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!