Skip to content

Commit d172a44

Browse files
committed
二叉树的所有路径
1 parent 6756826 commit d172a44

2 files changed

Lines changed: 125 additions & 0 deletions

File tree

leetcode/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
- [x] [View__二叉树的右视图](src/main/java/com/cpucode/binary/tree/right/side/View.java)
6464
- [x] [Tree__二叉树的最大深度](src/main/java/com/cpucode/binary/tree/maximum/depth/Tree.java)
6565
- [x] [Tree__二叉树的最小深度](src/main/java/com/cpucode/binary/tree/minimum/depth/Tree.java)
66+
- [x] [TreeTest__二叉树的所有路径](src/main/java/com/cpucode/binary/tree/paths/TreeTest.java)
6667

6768
------------------------
6869

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
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

Comments
 (0)