🌗 257. 二叉树的所有路埄

吞䜛童子2022幎10月10日
  • algorithm
  • tree
  • backtrace
小于 1 分钟

🌗 257. 二叉树的所有路埄

隟床: 🌗

问题描述

img_6.png


解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    List<String> res = new ArrayList<>();
    public List<String> binaryTreePaths(TreeNode root) {
        // 思路
        // 回溯
        LinkedList<Integer> path = new LinkedList<>();
        mySol(root, path);
        return res;
    }

    private void mySol(TreeNode root, LinkedList<Integer> path) {
        // 递園终止条件
        if(root.left == null && root.right == null) {
            path.addLast(root.val);
            getStr(path);
            path.removeLast();
            return;
        }
        path.addLast(root.val);
        if(root.left != null) {
            mySol(root.left, path);
        }
        if(root.right != null) {
            mySol(root.right, path);
        }
        path.removeLast();
    }

    private void getStr(LinkedList<Integer> path) {
        StringBuilder sb = new StringBuilder();
        int len = path.size();
        for(int i = 0; i < len; i ++) {
            sb.append(path.get(i));
            if(i < len - 1) {
                sb.append("->");
            }
        }
        res.add(sb.toString());
    }
}

蟓出

img_5.png

䞊次猖蟑于: 2022/10/10 䞋午8:43:48
莡献者: liuxianzhishou