博客
关于我
LeetCode——Binary Tree Paths
阅读量:802 次
发布时间:2023-01-31

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

二叉树遍历问题:生成根到叶路径

问题描述

给定一个二叉树,要求返回所有从根节点到叶节点的路径。每条路径用字符串表示,路径之间用“->”连接节点值。

示例

对于以下二叉树:

1   /   \  2     3    /   \   5     ...

所有根到叶的路径为:["1->2->5", "1->3"]

方法思路

我们可以使用深度优先搜索(DFS)来遍历二叉树。当到达叶节点时,记录当前路径并将其添加到结果列表中。为了实现路径的记录和回溯,我们可以使用一个递归方法,维护一个当前路径的列表。在访问叶节点时,将路径转换为字符串并存储;在递归返回时,清理当前路径。

解决代码

import java.util.ArrayList;import java.util.List;public class Solution {    List
paths = 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方法中,清空pathspath列表,准备开始遍历。
  • 递归遍历getAllPath方法递归地遍历二叉树。首先处理当前节点,如果当前节点为null,则返回。
  • 记录路径:将当前节点的值添加到path列表中。
  • 检查叶节点:如果当前节点没有左子树和右子树,则表示到达了叶节点。此时,使用StringBuilder将路径转换为字符串,并添加到paths列表中。
  • 继续遍历:递归地处理左子树和右子树。
  • 回溯:在递归返回时,移除path列表的最后一个元素,以确保路径信息正确回溯。
  • 这种方法使用了深度优先搜索,确保先遍历完全右子树再回溯,从而正确生成所有根到叶的路径。

    转载地址:http://bqgyk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
    查看>>
    OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
    查看>>
    OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
    查看>>
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>
    OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
    查看>>
    OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    OpenCV中的监督学习
    查看>>
    opencv中读写视频
    查看>>
    opencv之cv2.findContours和drawContours(python)
    查看>>
    opencv之namedWindow,imshow出现两个窗口
    查看>>
    opencv之模糊处理
    查看>>
    Opencv介绍及opencv3.0在 vs2010上的配置
    查看>>
    OpenCV使用霍夫变换检测图像中的形状
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>
    OpenCV保证输入图像为三通道
    查看>>
    OpenCV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    opencv图像分割2-GMM
    查看>>