以下是一个使用Java语言编写的递归方法,用于获取给定节点的所有路径:

public static List<String> getAllPaths(TreeNode root) {
    List<String> paths = new ArrayList<>();
    if (root == null) {
        return paths;
    }
    getAllPathsHelper(root, "", paths);
    return paths;
}

private static void getAllPathsHelper(TreeNode node, String path, List<String> paths) {
    if (node == null) {
        return;
    }
    if ("".equals(path)) {
        path += node.val;
    } else {
        path += "->" + node.val;
    }
    if (node.left == null && node.right == null) {
        paths.add(path);
        return;
    }
    getAllPathsHelper(node.left, path, paths);
    getAllPathsHelper(node.right, path, paths);
}

上述代码中,TreeNode是一个二叉树节点类,包含int类型的val属性和left、right两个TreeNode类型的子节点。

getAllPaths方法接受一个TreeNode类型的参数root,返回一个包含所有路径的字符串列表。如果root为null,则返回一个空列表。

getAllPathsHelper方法是递归的核心方法,它接受一个TreeNode类型的参数node、一个String类型的参数path和一个List类型的参数paths。它首先判断node是否为null,如果是则直接返回。然后将node.val添加到path中,如果path不为空,则在其后面添加'->',最后递归调用node的左右子节点,将path作为参数传递。如果node是叶子节点,则将path添加到paths列表中。

在调用getAllPaths方法时,只需要传入根节点即可获取整个二叉树的所有路径。

Java递归方法获取二叉树所有节点路径

原文地址: https://www.cveoy.top/t/topic/nVDL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录