zoukankan      html  css  js  c++  java
  • 112. 路径总和

     

     使用广度优先

    使用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;
        }
    争取早日不再是一只菜鸡
  • 相关阅读:
    Java-循环语句和条件语句
    Java-变量函数 上
    python
    python
    python
    Xpath
    python + selenium
    python + selenium
    python + selenium
    Web
  • 原文地址:https://www.cnblogs.com/jchen104/p/14648194.html
Copyright © 2011-2022 走看看