File tree 4 files changed +149
-17
lines changed
solution/0800-0899/0872.Leaf-Similar Trees
4 files changed +149
-17
lines changed Original file line number Diff line number Diff line change 27
27
28
28
<!-- 这里可写通用的实现逻辑 -->
29
29
30
+ 深度优先搜索。
31
+
30
32
<!-- tabs:start -->
31
33
32
34
### ** Python3**
33
35
34
36
<!-- 这里可写当前语言的特殊实现逻辑 -->
35
37
36
38
``` 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
38
59
```
39
60
40
61
### ** Java**
41
62
42
63
<!-- 这里可写当前语言的特殊实现逻辑 -->
43
64
44
65
``` 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
+ }
46
100
```
47
101
48
102
### ** ...**
Original file line number Diff line number Diff line change 29
29
### ** Python3**
30
30
31
31
``` 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
33
52
```
34
53
35
54
### ** Java**
36
55
37
56
``` 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
+ }
39
91
```
40
92
41
93
### ** ...**
Original file line number Diff line number Diff line change 4
4
* int val;
5
5
* TreeNode left;
6
6
* 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
+ * }
8
14
* }
9
15
*/
10
16
class Solution {
11
17
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 );
17
23
}
18
24
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 ;
26
30
}
31
+ dfs (root .left , leaves );
32
+ dfs (root .right , leaves );
27
33
}
28
34
}
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments