• Path Sum II——LeetCode


    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.

    For example:
    Given the below binary tree and sum = 22,

                  5
                 / 
                4   8
               /   / 
              11  13  4
             /      / 
            7    2  5   1
    

    return

    [
       [5,4,11,2],
       [5,8,4,5]
    ]

    题目大意:给一个二叉树和一个数,求从根节点到叶结点的和等于这个数的所有路径。

    解题思路:DFS,首先把当前节点入栈,然后分别递归左右子树,如果当前节点为空直接退出,如果当前节点是叶结点但是到根节点的路径和不等于指定的数也直接退出,如果等于指定的数,那么把这条路径加入结果List,递归完之后回退到上一层。

        public List<List<Integer>> pathSum(TreeNode root, int sum) {
            List<List<Integer>> res = new ArrayList<>();
            if (root == null) {
                return res;
            }
            List<Integer> tmp = new ArrayList<>();
            path(root, tmp, res, sum);
            return res;
        }
    
        public void path(TreeNode node, List<Integer> tmp, List<List<Integer>> res, int sum) {
            if (node == null) {
                return;
            }
            if (sum != node.val && node.left == null && node.right == null) {
                return;
            }
            tmp.add(node.val);
            if (sum == node.val && node.left == null && node.right == null) {
                res.add(new ArrayList<>(tmp));
                tmp.remove(tmp.size() - 1);
                return;
            }
            path(node.left, tmp, res, sum - node.val);
            path(node.right, tmp, res, sum - node.val);
            tmp.remove(tmp.size() - 1);
        }
  • 相关阅读:
    C# 数据的序列化存取
    C# 移动端与PC端的数据交互
    C# Socket 简易的图片传输
    C# Socket学习笔记二
    C# Socket学习笔记一
    unity 小地图的制作
    Unity Layout碰撞检测
    Unity sqlite学习笔记一
    玩家信息血条及伤害值随主角移动
    C# 热水器
  • 原文地址:https://www.cnblogs.com/aboutblank/p/4423296.html
Copyright © 2020-2023  润新知