zoukankan      html  css  js  c++  java
  • 第113题:路径总和II

    一. 问题描述

    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

    说明: 叶子节点是指没有子节点的节点。

    示例:

    给定如下二叉树,以及目标和 sum = 22,

                    5

                  /   

                4       8

               /        /   

           11      13     4

           /                /   

          7    2         5      1

    返回:

    [

       [5,4,11,2],

       [5,8,4,5]

    ]

    二. 解题思路

    本题思路:采用深度优先遍历和递归的方式进行求解。

    步骤一:构建递归函数(全局变量list存储结果值,局部变量data存储当前某一条路径,root当前节点,num当前路径值的和,tacket目标值)。

    步骤二:递归函数进行判断:如果当前节点是叶子节点,且num==tacket,则将当前data添加到list中,否则将当前节点变成当前节点的左子树节点和右子树节点重复步骤二。

    步骤三:当遍历完所有节点则放回输出list。

    三. 执行结果

    执行用时 :3 ms, 在所有 java 提交中击败了61.35%的用户

    内存消耗 :40.7 MB, 在所有 java 提交中击败了34.70%的用户

    四. Java代码

    class Solution {
        public List<List<Integer>> pathSum(TreeNode root, int sum) {
            List<List<Integer>> list=new ArrayList<List<Integer>>();
             if(root==null) {
                 return list;
             }else {
                 List<Integer> data=new ArrayList<Integer>();
                 data.add(root.val);
                 getTree(list,data,root,root.val,sum);
                 return list;
                 
             }
        }
         public void getTree(List<List<Integer>> list,List<Integer> data,TreeNode root,int num,int tacket) {
            
            if(root.left==null&&root.right==null&&num==tacket) {
                list.add(data);
            }
            
            if(root.left!=null) {
                List<Integer> temp=new ArrayList<Integer>(data);
                temp.add(root.left.val);
                getTree(list,temp,root.left,num+root.left.val,tacket);
    
            }
            
            if(root.right!=null) {
                List<Integer> tempright=new ArrayList<Integer>(data);
                tempright.add(root.right.val);
                getTree(list,tempright,root.right,num+root.right.val,tacket);
            }
                 
        }
    }
  • 相关阅读:
    linux将命令添加到PATH中
    查看linux服务器时间
    spring参数校验及全局异常处理
    Https协议的工作过程
    反爬虫方式
    telnet进入某个端口后无法退出
    索引操作
    redis output buffer 设置太小导致oom
    mysql查询课程浏览记录表中最近一周浏览次数最多的课程
    C++ 读写注册表
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11864687.html
Copyright © 2011-2022 走看看