257. 二叉树的所有路径

embedded/2025/2/5 3:50:46/
  1. 二叉树的所有路径
    已解答
    简单
    给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

示例 1:
在这里插入图片描述

输入:root = [1,2,3,null,5]
输出:[“1->2->5”,“1->3”]
示例 2:

输入:root = [1]
输出:[“1”]

提示:

树中节点的数目在范围 [1, 100] 内
-100 <= Node.val <= 100

#include <iostream>
#include <vector>
#include <string>
using namespace std;// 定义二叉树节点结构
struct TreeNode {int val;              // 节点值TreeNode* left;       // 左子树指针TreeNode* right;      // 右子树指针TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} // 构造函数
};class Solution {
public:vector<string> answer; // 用于存储所有根到叶子的路径/*** 递归函数 collect_path: 收集从根到叶子的路径* @param root 当前遍历的节点* @param path 当前路径的字符串表示*/void collect_path(TreeNode* root, string path) {// 递归终止条件:如果当前节点是叶子节点(没有左子树和右子树)if (root->left == nullptr && root->right == nullptr) {answer.push_back(path);  // 将完整路径存入答案数组return;}// 递归向左子树延伸路径if (root->left != nullptr)collect_path(root->left, path + "->" + to_string(root->left->val));// 递归向右子树延伸路径if (root->right != nullptr)collect_path(root->right, path + "->" + to_string(root->right->val));}/*** 计算二叉树的所有根到叶子的路径* @param root 二叉树的根节点* @return 包含所有路径的字符串数组*/vector<string> binaryTreePaths(TreeNode* root) {// 如果根节点为空,直接返回空数组if (root == nullptr)return {};// 从根节点开始递归遍历collect_path(root, to_string(root->val));// 返回最终答案return answer;}
};//  测试代码
int main() {// 创建一个二叉树://        1//       / \//      2   3//       \//        5TreeNode* root = new TreeNode(1);root->left = new TreeNode(2);root->right = new TreeNode(3);root->left->right = new TreeNode(5);// 计算二叉树的所有路径Solution sol;vector<string> result = sol.binaryTreePaths(root);// 输出所有路径for (const string& path : result) {cout << path << endl;}return 0;
}

http://www.ppmy.cn/embedded/159650.html

相关文章

HTB:UnderPass[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机UDP开放端口进行脚本、服务扫描 …

Python玄学

过年期间无聊的看了看DY直播&#xff0c;也是迷上玄学了。突然想着为啥要自己掐指算&#xff0c;我这&#x1f437;脑哪记得到那么多东西啊。然后&#xff0c;就捣鼓捣鼓了一些玩意儿。留个纪念。 注&#xff1a;就是一个玄学推动学习&#xff0c;部分内容不必当真&#xff0c;…

三傻排序的比较(选择,冒泡,插入)

在学习排序算法时&#xff0c;选择排序、冒泡排序和插入排序是最常见的基础排序算法。但是&#xff0c;尽管这些算法看起来非常相似&#xff0c;它们在实际应用中的效率和性能却有所不同。本文将详细比较这三种排序算法的时间复杂度、空间复杂度。 比较总结 排序算法时间复杂…

如何在5步内使用 Spring AI 和 OpenAI 的 DALL-E 3 生成图像

将 Spring AI 与 OpenAI 的 DALL-E 3 集成&#xff0c;以生成图像。轻松设置 Spring Boot、配置 API 集成并自定义设置。 大家好&#xff01;这是关于 Spring AI 系列介绍文章的第一篇。今天&#xff0c;我们将了解如何通过文本提示轻松生成图片。为此&#xff0c;我们将利用 …

Go优雅实现redis分布式锁

前言 系统为了保证高可用&#xff0c;通常会部署多实例&#xff0c;并且会存在同时对共享资源并发读写&#xff0c;这时候为了保证读写的安全&#xff0c;常规手段是会引入分布式锁&#xff0c;本文将介绍如何使用redis设计一个优雅的Go分布式锁。 设计 redis分布式锁是借助…

Golang —协程池(panjf2000/ants/v2)

Golang —协程池&#xff08;panjf2000/ants/v2&#xff09; 1 ants1.1 基本信息1.2 ants 是如何运行的&#xff08;流程图&#xff09; 1 ants 1.1 基本信息 代码地址&#xff1a;github.com/panjf2000/ants/v2 介绍&#xff1a;ants是一个高性能的 goroutine 池&#xff0c…

YOLOV11-1:YoloV11-安装和CLI方式训练模型

YoloV11-安装和CLI方式训练模型 1.安装和运行1.1安装的基础环境1.2安装yolo相关组件1.3命令行方式使用1.3.1 训练1.3.2 预测 本文介绍yoloV11的安装和命令行接口 1.安装和运行 1.1安装的基础环境 GPU环境&#xff0c;其中CUDA是12.4版本 1.2安装yolo相关组件 # 克隆github…

深度解析近期爆火的 DeepSeek

最近&#xff0c;AI 领域有个名字频繁出现在大众视野 ——DeepSeek&#xff0c;它的火爆程度就像一颗投入平静湖面的巨石&#xff0c;激起千层浪。今天&#xff0c;咱们就来深入了解一下这个 “AI 新星”。 官网&#xff1a;DeepSeek - 探索未至之境 DeepSeek 是什么 DeepSeek…