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

求解代码

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);
        }
相关推荐
风景的人生2 小时前
application/x-www-form-urlencoded
java·mvc
安卓机器2 小时前
安卓玩机工具推荐------免root权限使用的 支持安卓4至安卓16系统的系统开源应用 推荐
android·反编译apk
sheji34162 小时前
【开题答辩全过程】以 基于Java的流浪猫救济中心系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
毕设源码-郭学长2 小时前
【开题答辩全过程】以 高校选修课管理系统的设计与实现为例,包含答辩的问题和答案
java
summerkissyou19872 小时前
android-蓝牙-广播启动-startAdvertising和startAdvertisingSet区别
android·蓝牙
爱吃面条的猿2 小时前
FontMetrics 字体属性类 java
java
雪球Snowball2 小时前
【Android关键流程】Configuration变更时更新应用程序配置
android
蒹葭玉树2 小时前
【C++上岸】C++常见面试题目--操作系统篇(第二十九期)
java·c++·面试
h7ml2 小时前
于 CompletableFuture 的异步编排优化企业微信通知发送性能
android·windows·企业微信