
LeetCode——Binary Tree Paths
初始化:在 递归遍历: 记录路径:将当前节点的值添加到 检查叶节点:如果当前节点没有左子树和右子树,则表示到达了叶节点。此时,使用 继续遍历:递归地处理左子树和右子树。 回溯:在递归返回时,移除
发布日期:2025-04-05 04:01:17
浏览次数:12
分类:精选文章
本文共 1570 字,大约阅读时间需要 5 分钟。
二叉树遍历问题:生成根到叶路径
问题描述
给定一个二叉树,要求返回所有从根节点到叶节点的路径。每条路径用字符串表示,路径之间用“->”连接节点值。
示例
对于以下二叉树:
1 / \ 2 3 / \ 5 ...
所有根到叶的路径为:["1->2->5", "1->3"]
。
方法思路
我们可以使用深度优先搜索(DFS)来遍历二叉树。当到达叶节点时,记录当前路径并将其添加到结果列表中。为了实现路径的记录和回溯,我们可以使用一个递归方法,维护一个当前路径的列表。在访问叶节点时,将路径转换为字符串并存储;在递归返回时,清理当前路径。
解决代码
import java.util.ArrayList;import java.util.List;public class Solution { Listpaths = new ArrayList<>(); List path = new ArrayList<>(); public List binaryTreePaths(TreeNode root) { paths.clear(); path.clear(); getAllPath(root); return paths; } private void getAllPath(TreeNode node) { if (node == null) { return; } path.add(node.val); if (node.left == null && node.right == null) { // 当前路径是完整的,生成字符串 StringBuilder sb = new StringBuilder(); for (int i = 0; i < path.size(); i++) { if (i != 0) { sb.append("->"); } sb.append(path.get(i)); } paths.add(sb.toString()); } // 继续遍历左子树 if (node.left != null) { getAllPath(node.left); } // 回溯,移除最后一个节点值 path.remove(path.size() - 1); }}
代码解释
binaryTreePaths
方法中,清空paths
和path
列表,准备开始遍历。getAllPath
方法递归地遍历二叉树。首先处理当前节点,如果当前节点为null
,则返回。path
列表中。StringBuilder
将路径转换为字符串,并添加到paths
列表中。path
列表的最后一个元素,以确保路径信息正确回溯。这种方法使用了深度优先搜索,确保先遍历完全右子树再回溯,从而正确生成所有根到叶的路径。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月27日 14时46分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
elTable火狐浏览器换行
2025-03-29
15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29
0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏)
2025-03-29
100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了
2025-03-29
10个程序员可以接私活的平台
2025-03-29
10条sql语句优化的建议
2025-03-29
10款最佳免费WiFi黑客工具(附传送门)零基础入门到精通,收藏这一篇就够了
2025-03-29
15个备受欢迎的嵌入式GUI库,从零基础到精通,收藏这篇就够了!
2025-03-29
15个程序员常逛的宝藏网站!!从零基础到精通,收藏这篇就够了!
2025-03-29
2023应届毕业生找不到工作很焦虑怎么办?
2025-03-29
2024 年需要了解的顶级大数据工具(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29
2024大模型行业应用十大典范案例集(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29
2024年全球顶尖杀毒软件,从零基础到精通,收藏这篇就够了!
2025-03-29
2024年最流行的十大开源渗透测试工具
2025-03-29