Skip to content

Commit 0554c33

Browse files
committed
feat: add python and java solutions to leetcode problem: No.0872
See https://leetcode-cn.com/problems/leaf-similar-trees/
1 parent 323dfb9 commit 0554c33

File tree

4 files changed

+149
-17
lines changed

4 files changed

+149
-17
lines changed

solution/0800-0899/0872.Leaf-Similar Trees/README.md

+56-2
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,76 @@
2727

2828
<!-- 这里可写通用的实现逻辑 -->
2929

30+
深度优先搜索。
31+
3032
<!-- tabs:start -->
3133

3234
### **Python3**
3335

3436
<!-- 这里可写当前语言的特殊实现逻辑 -->
3537

3638
```python
37-
39+
# Definition for a binary tree node.
40+
# class TreeNode:
41+
# def __init__(self, val=0, left=None, right=None):
42+
# self.val = val
43+
# self.left = left
44+
# self.right = right
45+
class Solution:
46+
def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
47+
def dfs(root, leaves):
48+
if root is None:
49+
return
50+
if root.left is None and root.right is None:
51+
leaves.append(root.val)
52+
return
53+
dfs(root.left, leaves)
54+
dfs(root.right, leaves)
55+
l1, l2 = [], []
56+
dfs(root1, l1)
57+
dfs(root2, l2)
58+
return l1 == l2
3859
```
3960

4061
### **Java**
4162

4263
<!-- 这里可写当前语言的特殊实现逻辑 -->
4364

4465
```java
45-
66+
/**
67+
* Definition for a binary tree node.
68+
* public class TreeNode {
69+
* int val;
70+
* TreeNode left;
71+
* TreeNode right;
72+
* TreeNode() {}
73+
* TreeNode(int val) { this.val = val; }
74+
* TreeNode(int val, TreeNode left, TreeNode right) {
75+
* this.val = val;
76+
* this.left = left;
77+
* this.right = right;
78+
* }
79+
* }
80+
*/
81+
class Solution {
82+
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
83+
List<Integer> l1 = new ArrayList<>();
84+
List<Integer> l2 = new ArrayList<>();
85+
dfs(root1, l1);
86+
dfs(root2, l2);
87+
return l1.equals(l2);
88+
}
89+
90+
private void dfs(TreeNode root, List<Integer> leaves) {
91+
if (root == null) return;
92+
if (root.left == null && root.right == null) {
93+
leaves.add(root.val);
94+
return;
95+
}
96+
dfs(root.left, leaves);
97+
dfs(root.right, leaves);
98+
}
99+
}
46100
```
47101

48102
### **...**

solution/0800-0899/0872.Leaf-Similar Trees/README_EN.md

+54-2
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,65 @@
2929
### **Python3**
3030

3131
```python
32-
32+
# Definition for a binary tree node.
33+
# class TreeNode:
34+
# def __init__(self, val=0, left=None, right=None):
35+
# self.val = val
36+
# self.left = left
37+
# self.right = right
38+
class Solution:
39+
def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
40+
def dfs(root, leaves):
41+
if root is None:
42+
return
43+
if root.left is None and root.right is None:
44+
leaves.append(root.val)
45+
return
46+
dfs(root.left, leaves)
47+
dfs(root.right, leaves)
48+
l1, l2 = [], []
49+
dfs(root1, l1)
50+
dfs(root2, l2)
51+
return l1 == l2
3352
```
3453

3554
### **Java**
3655

3756
```java
38-
57+
/**
58+
* Definition for a binary tree node.
59+
* public class TreeNode {
60+
* int val;
61+
* TreeNode left;
62+
* TreeNode right;
63+
* TreeNode() {}
64+
* TreeNode(int val) { this.val = val; }
65+
* TreeNode(int val, TreeNode left, TreeNode right) {
66+
* this.val = val;
67+
* this.left = left;
68+
* this.right = right;
69+
* }
70+
* }
71+
*/
72+
class Solution {
73+
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
74+
List<Integer> l1 = new ArrayList<>();
75+
List<Integer> l2 = new ArrayList<>();
76+
dfs(root1, l1);
77+
dfs(root2, l2);
78+
return l1.equals(l2);
79+
}
80+
81+
private void dfs(TreeNode root, List<Integer> leaves) {
82+
if (root == null) return;
83+
if (root.left == null && root.right == null) {
84+
leaves.add(root.val);
85+
return;
86+
}
87+
dfs(root.left, leaves);
88+
dfs(root.right, leaves);
89+
}
90+
}
3991
```
4092

4193
### **...**

solution/0800-0899/0872.Leaf-Similar Trees/Solution.java

+19-13
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,31 @@
44
* int val;
55
* TreeNode left;
66
* TreeNode right;
7-
* TreeNode(int x) { val = x; }
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
814
* }
915
*/
1016
class Solution {
1117
public boolean leafSimilar(TreeNode root1, TreeNode root2) {
12-
List<Integer> rootA = new ArrayList<>();
13-
List<Integer> rootB = new ArrayList<>();
14-
dfs(root1, rootA);
15-
dfs(root2, rootB);
16-
return rootA.equals(rootB);
18+
List<Integer> l1 = new ArrayList<>();
19+
List<Integer> l2 = new ArrayList<>();
20+
dfs(root1, l1);
21+
dfs(root2, l2);
22+
return l1.equals(l2);
1723
}
1824

19-
private void dfs(TreeNode root, List<Integer> res) {
20-
if (root != null) {
21-
if (root.left == null && root.right == null) {
22-
res.add(root.val);
23-
}
24-
dfs(root.left, res);
25-
dfs(root.right, res);
25+
private void dfs(TreeNode root, List<Integer> leaves) {
26+
if (root == null) return;
27+
if (root.left == null && root.right == null) {
28+
leaves.add(root.val);
29+
return;
2630
}
31+
dfs(root.left, leaves);
32+
dfs(root.right, leaves);
2733
}
2834
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
9+
def dfs(root, leaves):
10+
if root is None:
11+
return
12+
if root.left is None and root.right is None:
13+
leaves.append(root.val)
14+
return
15+
dfs(root.left, leaves)
16+
dfs(root.right, leaves)
17+
l1, l2 = [], []
18+
dfs(root1, l1)
19+
dfs(root2, l2)
20+
return l1 == l2

0 commit comments

Comments
 (0)