【回溯】二叉树的所有路径

求解代码

java 复制代码
public List<String> binaryTreePaths(TreeNode root) {
            List<String> ans = new ArrayList<>();
            if (root == null) {
                return ans;
            }
            StringBuilder sb = new StringBuilder();
            backtrack(root, sb, ans);
            return ans;
        }

        private void backtrack(TreeNode root, StringBuilder sb, List<String> ans) {
            if (root == null) {
                return;
            }
            // 记录当前拼接前的长度,用于回溯撤销
            int len = sb.length();

            sb.append(root.val);
            // 到达叶子节点,添加完整路径
            if (root.left == null && root.right == null) {
                ans.add(sb.toString());
            } else {
                sb.append("->");
                backtrack(root.left, sb, ans);
                backtrack(root.right, sb, ans);
            }
            // 回溯撤销,恢复StringBuilder到拼接前的状态
            sb.setLength(len);
        }
相关推荐
qq_353737542 小时前
网站 Favicon 获取 API 技术实现指南
android
小碗羊肉2 小时前
【从零开始学Java | 第三十篇】不可变集合
java·开发语言
鱼鳞_2 小时前
Java学习笔记_Day21(Set)
java·笔记·学习
五阿哥永琪2 小时前
record只读类
java·开发语言
sjmaysee2 小时前
mysql之联合索引
java
stevenzqzq2 小时前
Android Navigation 组件页面跳转方法说明
android·compose
HoneyMoose2 小时前
Markdown 为什么会被更广泛的使用
java
Kapaseker2 小时前
Compose 响应式布局要变天—入门 FlexBox
android·kotlin
极创信息2 小时前
不同开发语言程序如何做信创适配认证?完整流程与评价指标有哪些
java·c语言·开发语言·python·php·ruby·hibernate
Seven972 小时前
用300行代码手写SpringBoot核心原理
java