LeetCode257

    技术2022-08-01  69

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<String> binaryTreePaths(TreeNode root) { // List<String> ans = new ArrayList<>(); // if (root == null) { // return ans; // } // // 如果是叶子结点就加入到 ans 结果集中 // if (root.left == null && root.right == null) { // ans.add(Integer.toString(root.val)); // return ans; // } // // 创建左子树结点集合 // List<String> leftPaths = binaryTreePaths(root.left); // for (String s : leftPaths) { // // 先将该结点加入到字符串中 // StringBuilder sb = new StringBuilder(Integer.toString(root.val)); // sb.append("->"); // sb.append(s); // ans.add(sb.toString()); // } // // 创建右子树结点集合 // List<String> rightPaths = binaryTreePaths(root.right); // for (String s : rightPaths) { // StringBuilder sb = new StringBuilder(Integer.toString(root.val)); // sb.append("->"); // sb.append(s); // ans.add(sb.toString()); // } // return ans; LinkedList<String> paths = new LinkedList(); construct_paths(root, "", paths); return paths; } public void construct_paths(TreeNode root, String path, LinkedList<String> paths) { if (root != null) { path += Integer.toString(root.val); if ((root.left == null) && (root.right == null)) // 当前节点是叶子节点 paths.add(path); // 把路径加入到答案中 else { path += "->"; // 当前节点不是叶子节点,继续递归遍历 construct_paths(root.left, path, paths); construct_paths(root.right, path, paths); } } } }

     

    Processed: 0.016, SQL: 9