刷题专栏(十四):二叉树的所有路径

简介: 刷题专栏(十四):二叉树的所有路径

前言

刷题专栏到目前已经是第十四篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天我们要来看的这道题,主要是考察二叉树的理解,没有什么逻辑,说白了,技术含量低。

下面我们就一起来看看吧。

image.png

算法题:二叉树的所有路径

从这道题的题目来看,这道题其实没什么难度的。

但是看了示例之后,发现还是对二叉树的理解要求比较高一些的。

要解出这道题,首先要通过递归的方式来拿到所有的节点数据。

而且还要在递归的过程中,拼接存在的路径。

然后将结果存入一个List集合中,这里的List集合只是用来存储路径的,所以不要过多的被这个参数影响。

下面就来看一下具体的代码逻辑吧。

代码展示

今天执行的代码如下所示,主要是利用递归来实现的,这个方式还是挺好理解的。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<String> binaryTreePaths(TreeNode root) {
        List<String> resultList = new ArrayList<String>();
        path(root, "", resultList);
        return resultList;
    }
    public void path(TreeNode root, String path, List<String> resultList) {
        if (root != null) {
            StringBuffer p = new StringBuffer(path);
            p.append(Integer.toString(root.val));
            if (root.left == null && root.right == null) {  
                resultList.add(p.toString());  
            } else {
                p.append("->");  
                path(root.left, p.toString(), resultList);
                path(root.right, p.toString(), resultList);
            }
        }
    }
}

代码执行结果

执行结果还可以,主要是StringBuffer占内存了,换成StringBuild可能会好一些,太懒没去试,就交给大家自己去试一试了。

image.png

总结

今天的题目没什么难度,所以比较适合对二叉树的理解不是很多的人群,或者是对二叉树不了解的朋友们。

目录
相关文章
|
6月前
|
存储 算法
【优选算法专栏】专题十六:BFS解决最短路问题---前言
【优选算法专栏】专题十六:BFS解决最短路问题---前言
61 1
|
6月前
|
算法
【优选算法专栏】专题十八:BFS解决拓扑排序--前言
【优选算法专栏】专题十八:BFS解决拓扑排序--前言
52 1
|
6月前
|
C语言
【递归搜索回溯专栏】前言与本专栏介绍
【递归搜索回溯专栏】前言与本专栏介绍
58 0
|
6月前
|
Java
JAVA数据结构刷题 -- 二叉树进阶
JAVA数据结构刷题 -- 二叉树进阶
44 0
|
6月前
|
存储 编译器 C语言
牛客网刷题笔记小节(二)
牛客网刷题笔记小节(二)
|
6月前
|
人工智能 算法 编译器
刷题日记①
刷题日记①
57 2
|
6月前
|
机器人
[leedcode]刷题有感--动态规划入门及思路模板
[leedcode]刷题有感--动态规划入门及思路模板
|
Cloud Native
【刷题日记】606. 根据二叉树创建字符串
本次刷题日记的第 7 篇,力扣题为:606. 根据二叉树创建字符串 ,简单
|
6月前
|
算法
刷题专栏(十二):翻转二叉树
刷题专栏(十二):翻转二叉树
66 0
|
算法
代码随想录算法训练营第三十九天 | LeetCode 62. 不同路径、63. 不同路径 II
代码随想录算法训练营第三十九天 | LeetCode 62. 不同路径、63. 不同路径 II
42 1