1+ package com .cpucode .binary .tree .paths ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .Collections ;
5+ import java .util .List ;
6+
7+ /**
8+ * 257. 二叉树的所有路径
9+ *
10+ * 题目描述
11+ * 给定一个二叉树,返回所有从根节点到叶子节点的路径。
12+ * 说明: 叶子节点是指没有子节点的节点。
13+ *
14+ * 示例:
15+ *
16+ * 输入:
17+ * 1
18+ * / \
19+ * 2 3
20+ * \
21+ * 5
22+ *
23+ * 输出: ["1->2->5", "1->3"]
24+ *
25+ * 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3
26+ *
27+ * 解法
28+ * 深度优先搜索+路径记录。
29+ *
30+ * @author : cpucode
31+ * @date : 2021/5/17
32+ * @time : 10:23
33+ * @github : https://github.com/CPU-Code
34+ * @csdn : https://blog.csdn.net/qq_44226094
35+ */
36+ public class TreeTest {
37+ private List <String > res ;
38+ private List <String > path ;
39+
40+ public static void main (String [] args ) {
41+ TreeTest tree = new TreeTest ();
42+
43+ TreeNode treeNode = new TreeNode ();
44+ TreeNode treeNode2 = new TreeNode ();
45+ TreeNode treeNode3 = new TreeNode ();
46+ TreeNode treeNode4 = new TreeNode ();
47+ TreeNode treeNode5 = new TreeNode ();
48+
49+ treeNode .val = 1 ;
50+ treeNode2 .val = 2 ;
51+ treeNode3 .val = 3 ;
52+ treeNode4 .val = 4 ;
53+ treeNode5 .val = 5 ;
54+
55+ treeNode .left = treeNode2 ;
56+ treeNode2 .left = treeNode4 ;
57+
58+ treeNode .right = treeNode3 ;
59+ treeNode2 .right = treeNode5 ;
60+
61+ /**
62+ * 1 <---
63+ * / \
64+ * 2 3 <---
65+ * / \
66+ * 4 5 <---
67+ */
68+ List <String > str = tree .binaryTreePaths (treeNode );
69+
70+ System .out .println (str );
71+ }
72+
73+ List <String > binaryTreePaths (TreeNode root ){
74+ if (root == null ){
75+ return Collections .emptyList ();
76+ }
77+
78+ res = new ArrayList <>();
79+ path = new ArrayList <>();
80+
81+ dfs (root );
82+
83+ return res ;
84+ }
85+
86+ private void dfs (TreeNode root ) {
87+ if (root == null ){
88+ return ;
89+ }
90+
91+ path .add (String .valueOf (root .val ));
92+
93+ if (root .left == null && root .right == null ){
94+ res .add (String .join ("->" , path ));
95+
96+ System .out .println ("res : " + res );
97+ }
98+
99+ dfs (root .left );
100+ dfs (root .right );
101+
102+ path .remove (path .size () -1 );
103+ }
104+
105+ }
106+
107+ class TreeNode {
108+ int val ;
109+
110+ TreeNode left ;
111+ TreeNode right ;
112+
113+ TreeNode (){}
114+
115+ TreeNode (int val ) {
116+ this .val = val ;
117+ }
118+
119+ TreeNode (int val , TreeNode left , TreeNode right ) {
120+ this .val = val ;
121+ this .left = left ;
122+ this .right = right ;
123+ }
124+ }
0 commit comments