zoukankan      html  css  js  c++  java
  • Lc257_二叉树的所有路径

    package com.example.leetcode;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @description: 257. 二叉树的所有路径
     * 给定一个二叉树,返回所有从根节点到叶子节点的路径。
     * <p>
     * 说明: 叶子节点是指没有子节点的节点。
     * <p>
     * 示例:
     * <p>
     * 输入:
     * <p>
     * 1
     * /   
     * 2     3
     * 
     * 5
     * <p>
     * 输出: ["1->2->5", "1->3"]
     * <p>
     * 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
     * @author: licm
     * @create: 2021-04-19 20:35
     **/
    public class Lc257_二叉树的所有路径 {
        /**
         * 思路:dfs,记录所有路径,直到到最后一个节点
         *
         * @param root
         * @return
         */
        public static List<String> binaryTreePaths(TreeNode root) {
            List<String> paths = new ArrayList<>();
            traversal(root, "", paths);
            return paths;
        }
    
        static void traversal(TreeNode root, String path, List<String> paths) {
            if (root == null) {
                return;
            }
            path += root.val;
            if (root.left == null && root.right == null) {
                paths.add(path);
            }
            path += "->";
            traversal(root.left, path, paths);
            traversal(root.right, path, paths);
        }
    
        public static void main(String[] args) {
    
            Integer[] arr = new Integer[]{1, 2, 3, 4, 5, 6, 7};
            TreeNode root = CreateNode.createTree(arr).get(0);
            binaryTreePaths(root).forEach(n -> {
                System.out.println(n);
            });
    
        }
    
    }
    
    
    不会,我可以学;落后,我可以追赶;跌倒,我可以站起来!
  • 相关阅读:
    IP地址加时间戳加3位随机数
    你会想造一艘船吗?
    提问的智慧
    建造者模式
    设计模式(一)
    jeesite中activiti中的流程表梳理
    如何读书、学习?
    zxing生成高容错率二维码,以及添加文字
    LVM磁盘划分
    阿里云盘扩容(SUSE Linux下)
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/14678637.html
Copyright © 2011-2022 走看看