算法:二叉树的所有路径

devtools/2024/9/23 13:53:35/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、背景介绍

二、解题步骤

总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、背景介绍

给定一个二叉树,返回所有从根节点到叶子节点的路径。

输入:1/   \
2     3\5
输出: ["1->2->5", "1->3"]
解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3

二、解题步骤

解题思路:

我们可以逆向推理,如果该二叉树有N个叶子节点,是不是意味着要做N次路径拼接添加操作。

单次的路径拼接操作,由叶子节点的值和父节点的路径组成,父节点的路径又由它的父节点的路径组成。也就是说我们从根节点出发,分别朝左子树和右子树遍历,只要当前节点不是叶子节点,那么就将当前节点的信息放入父节点的路径,直到遇到叶子节点,然后完成最后的组装。

这个题很适合用递归的思路解答。

代码示例:

@Test
public void test(TreeNode root) {List<String> answer = new ArrayList<>();searchBT(root, "", answer);System.out.println(JSON.toJSONString(answer));
}private void searchBT(TreeNode root, String path, List<String> answer) {if (root.left == null && root.right == null) {answer.add(path + root.val);}if (root.left != null) {searchBT(root.left, path + root.val + "->", answer);}if (root.right != null) {searchBT(root.right, path + root.val + "->", answer);}
}

path + root.val + "->"   父节点路径拼接

path + root.val    叶子节点全路径组装

这是两个关键点。


总结

每天进步一点点!


http://www.ppmy.cn/devtools/27274.html

相关文章

面试经典算法题之双指针专题

力扣经典面试题之双指针 ( 每天更新, 每天一题 ) 文章目录 力扣经典面试题之双指针 ( 每天更新, 每天一题 )验证回文串收获 392. 判断子序列167. 两数之和 - 输入有序数组 验证回文串 思路 一: 筛选 双指针验证 class Solution { public:bool isPalindrome(string s) {// 所有…

【工程记录】Python爬虫入门记录(Requests BeautifulSoup)

目录 写在前面1. 环境配置2. 获取网页数据3. 解析网页数据4. 提取所需数据4.1 简单提取4.2 多级索引提取 5. 常见问题 写在前面 仅作个人学习与记录用。主要整理使用Requests和BeautifulSoup库的简单爬虫方法。在进行数据爬取时&#xff0c;请确保遵守相关法律法规和网站的服务…

ZISUOJ 高级语言程序设计实训-基础C(部分题)

说明&#xff1a; 有几个题是不会讲的&#xff0c;我只能保证大家拿保底分。 题目列表&#xff1a; 问题 A: 求平均数1 思路&#xff1a; 送分题…… 参考题解&#xff1a; #include <iostream> #include <iomanip> using std::cin; using std::cout;int main(…

CSS高级选择器

一、属性选择器 以value开头的att属性的E元素&#xff1a;E[att^"value"]{ ;} a[href^http]{background-color"red";} css a[href^http]{background-color"red"; } html <!DOCTYPE html> <html lang"en"> <head&…

Stable Diffusion一键安装包启动疑难报错解析:Python 无法找到模块‘urlib’以及其他报错的解决方法

在探索Stable Diffusion&#xff08;简称SD&#xff09;这一强大技术的旅程中&#xff0c;我们有时可能会遇到一些始料未及的问题。其中&#xff0c;启动一键安装包时遭遇的“Python 无法找到模块‘urlib’”的报错&#xff0c;就是许多新手用户可能会碰到的一个挑战。 更多内…

GateWay具体的使用之局部过滤器接口耗时

1.找规律 局部过滤器命名规则 XXXGatewayFilterFactory&#xff0c; 必须以GatewayFilterFactory结尾。 /* 注意名称约定 * AddRequestHeaderGatewayFilterFactory 配置的时候写的是 AddRequestHeader * AddRequestParameterGatewayFilterFactory 配置的时候写的是 A…

ElasticSearch教程入门到精通——第二部分(基于ELK技术栈elasticsearch 7.x新特性)

ElasticSearch教程入门到精通——第二部分&#xff08;基于ELK技术栈elasticsearch 7.x新特性&#xff09; 1. JavaAPI-环境准备1.1 新建Maven工程——添加依赖1.2 HelloElasticsearch 2. 索引2.1 索引——创建2.2 索引——查询2.3 索引——删除 3. 文档3.1 文档——重构3.2 文…

Pytest:hooks钩子函数

Pytest&#xff1a;hooks钩子函数 Bootstrapping hooks 引导钩子Initialization hooks 初始化钩子Collection hooks 测试用例收集钩子Test running (runtest) hooks 测试运行钩子Reporting hooks 测试报告钩子Debugging/Interaction hooks 调试/交互钩子 Pytest的钩子函数可分为…