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

    给定一个二叉树,它的每个结点都存放着一个整数值。

    找出路径和等于给定数值的路径总数。

    路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

    二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。

    示例:

    root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8
    
          10
         /  
        5   -3
       /     
      3   2   11
     /    
    3  -2   1
    
    返回 3。和等于 8 的路径有:
    
    1.  5 -> 3
    2.  5 -> 2 -> 1
    3.  -3 -> 11
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public int pathSum(TreeNode root, int sum) {
            if(root == null)
                return 0;
            int returnCount = 0;
            Queue<TreeNode> queue = new LinkedList();
            queue.add(root);
            while(!queue.isEmpty())
            {
                int count = 0;
                TreeNode Node = queue.poll();
                if(Node.left != null)
                {
                    queue.offer(Node.left);
                }
                if(Node.right != null)
                {
                    queue.offer(Node.right);
                }
                returnCount += Sum(Node, sum, Node.val);           
            }
            return returnCount;
        }
        public int Sum(TreeNode Node, int sum, int tmpSum)
        {
            int count = 0;    //记录从结点Node出发符合条件的数量     
            if(tmpSum == sum)
                {count++;}
            int leftnum = tmpSum;
            if(Node.left != null)
            {
                TreeNode tmpNode = Node.left;           
                leftnum += tmpNode.val;
                count += Sum(tmpNode, sum, leftnum);
            }
            int rightnum = tmpSum;
            if(Node.right != null)
            {
                TreeNode tmpNode = Node.right;            
                rightnum += tmpNode.val;
                count += Sum(tmpNode, sum, rightnum);
            }
            return count;
        }
    }  
    绕混了,调了俩小时。。。。
  • 相关阅读:
    matlab--“下标索引必须为正整数类型或逻辑类型”
    将中缀表达式转化为后缀表达式
    MATLAB那些常见的命令
    关于实现线程同步的几种方式
    关于http协议
    小白学习之activiti工作流入门
    小白- jquery 学习笔记
    小白-Javascript学习笔记
    小白-css笔记
    小白- html笔记
  • 原文地址:https://www.cnblogs.com/Duancf/p/12535612.html
Copyright © 2011-2022 走看看