经典算法题:二叉树的所有路径

一、题目

给定一个二叉树,返回所有从根节点到叶子节点的路径。

二、思路

回溯算法

三、实现

public List<String> binaryTreePaths(TreeNode root) {

        List<String> res = new ArrayList<>();

        dfs(root, new ArrayList<Integer>(), res);

        return res;

    }

    public void dfs(TreeNode root, List<Integer> list, List<String> res) {

        if (root == null) {

            return;

        }

        list.add(root.val);

        if (root.left == null && root.right == null) {

            StringBuffer sb = new StringBuffer();

            for (int num : list) {

                if (sb.length() == 0) {

                    sb.append(num + "");

                } else {

                    sb.append("->").append(num + "");

                }

            }

            res.add(sb.toString());

        }

        dfs(root.left, list, res);

        dfs(root.right, list, res);

        list.remove(list.size() - 1);

    }

发布了83 篇原创文章 · 获赞 0 · 访问量 4508

猜你喜欢

转载自blog.csdn.net/zhangdx001/article/details/105509994
今日推荐