博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
376. Binary Tree Path Sum【LintCode java】
阅读量:5068 次
发布时间:2019-06-12

本文共 1621 字,大约阅读时间需要 5 分钟。

Description

Given a binary tree, find all paths that sum of the nodes in the path equals to a given number target.

A valid path is from root node to any of the leaf nodes.

Example

Given a binary tree, and target = 5:

1    / \   2   4  / \ 2   3

return

[  [1, 2, 2],  [1, 4]]

解题:给一个二叉树,找到和是给定目标值的支路。如果不用栈,需要考虑一下回溯算法的运用,代码如下:

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this.left = this.right = null; *     } * } */public class Solution {    /*     * @param root: the root of binary tree     * @param target: An integer     * @return: all valid paths     */    int target = 0;    List
> res = new ArrayList<>(); public List
> binaryTreePathSum(TreeNode root, int target) { // write your code here if(root == null){ return res; } this.target = target; List
path = new ArrayList<>(); helper(path, root, 0); return res; } public void helper(List
path, TreeNode root, int sum){ sum +=root.val; path.add(root.val); //如果到叶子结点了,并且和为target if(root.left == null && root.right == null && sum == target){ ArrayList
temp = new ArrayList<>(); temp.addAll(path);//复制一份 res.add(temp); } if(root.left != null){ helper(path, root.left, sum); } if(root.right != null){ helper(path, root.right, sum); } path.remove(path.size() - 1); }}

 

转载于:https://www.cnblogs.com/phdeblog/p/9312183.html

你可能感兴趣的文章
安全测试的一些漏洞和测试方法
查看>>
spring框架学习笔记(八)
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
python numpy sum函数用法
查看>>
Linux中的SELinux详解--16
查看>>
php变量什么情况下加大括号{}
查看>>
less入门
查看>>
如何实现手游app瘦身?
查看>>
linux程序设计---序
查看>>
【字符串入门专题1】hdu3613 【一个悲伤的exkmp】
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
21.Longest Palindromic Substring(最长回文子串)
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
Java处理多人同时读写文件的文件锁处理
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
判断文本框输入的文字长度
查看>>