LeetCode笔记:257. Binary Tree Paths
2023-03-15 23:24:21 时间
问题:
Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree:
image.png All root-to-leaf paths are: ["1->2->5", "1->3"]
大意:
给出一个二叉树,返回所有从根节点到叶子节点的路径。 比如给出下面这个二叉树:
image.png 所有从根节点到叶子节点的路径为: ["1->2->5", "1->3"]
思路:
这道题适合用递归,依次判断有没有左右叶子节点,分别去做递归,在递归中把遇到的节点值拼接到路径字符串的最后,注意要拼接“->”这个内容,直到没有左右子节点后,表示已经到了叶子节点了,就可以终止了,把这条路径的字符串添加到结果中去。
代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<String> binaryTreePaths(TreeNode root) {
List<String> result = new ArrayList<String>();
if (root == null) return result;
String path = String.valueOf(root.val);
findPath(result, root, path);
return result;
}
public void findPath(List<String> list, TreeNode root, String path) {
if (root.left == null && root.right == null) {
list.add(path);
return;
}
if (root.left != null) {
StringBuffer pathBuffer = new StringBuffer(path);
pathBuffer.append("->");
pathBuffer.append(String.valueOf(root.left.val));
findPath(list, root.left, pathBuffer.toString());
}
if (root.right != null) {
StringBuffer pathBuffer = new StringBuffer(path);
pathBuffer.append("->");
pathBuffer.append(String.valueOf(root.right.val));
findPath(list, root.right, pathBuffer.toString());
}
}
}
相关文章
- 干货 :数据分析师的完整流程与知识结构体系
- 对比解读五种主流大数据架构的数据分析能力
- 残酷!如果你35岁破产,你还有多大可能逆袭?(数据分析)
- C#程序员经常用到的10个实用代码片段
- 程序员必备:100本免费编程图书
- 2015年十五个热门的 PHP 开发工具
- 这五个编程谬论值得大家注意
- 程序员既要写好代码,又要写好文档
- PHP之父:PHP7 性能翻倍关键大揭秘
- 优秀的代码是反复修改后创造出来的
- 关于PHP程序员解决问题的能力
- 年薪百万的大数据开发工程师的入门书单
- Hello World 程序的起源与历史
- 大数据时代十大热门IT岗位
- 超级干货 :一文总览数据科学全景:定律、算法、问题类型...
- 非科班出身的人学习编程不负责任指南
- 什么时候应该避免注释代码?
- 怎么看待程序员普遍缺乏数据结构和算法的知识?
- 现在写 PHP,你应该知道这些
- 居然还能这样——程序员加薪的新方法