leetcode-257-easy

Binary Tree Paths

Given the root of a binary tree, return all root-to-leaf paths in any order.

A leaf is a node with no children.

Example 1:


Input: root = [1,2,3,null,5]
Output: ["1->2->5","1->3"]
Example 2:

Input: root = [1]
Output: ["1"]
Constraints:

The number of nodes in the tree is in the range [1, 100].
-100 <= Node.val <= 100

思路一:递归,从叶子节点往上回溯。看了一下题解,也可以从根节点往下构造,两种思路,从根节点往下构造代码会简洁很多

public List<String> binaryTreePaths(TreeNode root) {
    ArrayList<String> result = new ArrayList<>();
    if (root == null) {
        return result;
    }

    List<String> left = binaryTreePaths(root.left);
    List<String> right = binaryTreePaths(root.right);

    if (left.isEmpty() && right.isEmpty()) {
        result.add(root.val + "");
    }

    if (!left.isEmpty()) {
        for (String s : left) {
            result.add(root.val + "->" + s);
        }
    }

    if (!right.isEmpty()) {
        for (String s : right) {
            result.add(root.val + "->" + s);
        }
    }

    return result;
}
posted @ 2022-11-01 19:58  iyiluo  阅读(21)  评论(0)    收藏  举报