前言
刷题专栏到目前已经是第十四篇了,欢迎大家来关注我的刷题专栏,一起来刷题。
今天我们要来看的这道题,主要是考察二叉树的理解,没有什么逻辑,说白了,技术含量低。
下面我们就一起来看看吧。
算法题:二叉树的所有路径
从这道题的题目来看,这道题其实没什么难度的。
但是看了示例之后,发现还是对二叉树的理解要求比较高一些的。
要解出这道题,首先要通过递归的方式来拿到所有的节点数据。
而且还要在递归的过程中,拼接存在的路径。
然后将结果存入一个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可能会好一些,太懒没去试,就交给大家自己去试一试了。
总结
今天的题目没什么难度,所以比较适合对二叉树的理解不是很多的人群,或者是对二叉树不了解的朋友们。