码迷,mamicode.com
首页 > 其他好文 > 详细

DFS_257. 二叉树的所有路径

时间:2020-07-24 15:45:50      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:new   bin   来源   title   bsp   输出   递归遍历   bfs   nbsp   

 

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

 

说明: 叶子节点是指没有子节点的节点。

 

示例:

输入:

1
/ 2 3
5

输出: ["1->2->5", "1->3"]

 

解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3

 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths


思路:

树的dfs算法相对图的dfs算法更容易理解一点,BFS也是树比较好理解

这里先看官方给的定义

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */

每个节点都有他的左孩子或者右孩子,除非他是叶子节点

所以遍历就看是不是叶子节点就行了,不是叶子节点就递归,是叶子节点就记录该条路径,回溯

class Solution {
     public static LinkedList<String> dfs(TreeNode root, String way, LinkedList<String>path){
        if (root == null){
            return null;
        }else {
            //路径中加入该节点
            way += Integer.toString(root.val);
            // 当前节点是叶子节点
            if ((root.left == null) && (root.right == null)) 
                // 记录该条路径
                path.add(way);  
            else {
                way += "->";  // 当前节点不是叶子节点,继续递归遍历
                dfs(root.left, way, path);
                dfs(root.right, way, path);
            }
        }
        return path;
    }

    public List<String> binaryTreePaths(TreeNode root) {
        LinkedList<String> path = new LinkedList();
        dfs(root, "", path);
        return path;
    }        
}

 

DFS_257. 二叉树的所有路径

标签:new   bin   来源   title   bsp   输出   递归遍历   bfs   nbsp   

原文地址:https://www.cnblogs.com/zzxisgod/p/13371175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!