Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit dcc11b6

Browse files
feat: add solutions to lcof2 problem: No.045
1 parent 92f9405 commit dcc11b6

File tree

4 files changed

+181
-2
lines changed

4 files changed

+181
-2
lines changed

‎lcof2/剑指 Offer II 045. 二叉树最底层最左边的值/README.md‎

Lines changed: 94 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,22 +46,81 @@
4646

4747
<!-- 这里可写通用的实现逻辑 -->
4848

49+
"BFS 层次遍历"实现。
50+
4951
<!-- tabs:start -->
5052

5153
### **Python3**
5254

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

5557
```python
56-
58+
# Definition for a binary tree node.
59+
# class TreeNode:
60+
# def __init__(self, val=0, left=None, right=None):
61+
# self.val = val
62+
# self.left = left
63+
# self.right = right
64+
class Solution:
65+
def findBottomLeftValue(self, root: TreeNode) -> int:
66+
d = deque([root])
67+
ans = -1
68+
while d:
69+
n = len(d)
70+
for i in range(n):
71+
node = d.popleft()
72+
if i == 0:
73+
ans = node.val
74+
if node.left:
75+
d.append(node.left)
76+
if node.right:
77+
d.append(node.right)
78+
return ans
5779
```
5880

5981
### **Java**
6082

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

6385
```java
64-
86+
/**
87+
* Definition for a binary tree node.
88+
* public class TreeNode {
89+
* int val;
90+
* TreeNode left;
91+
* TreeNode right;
92+
* TreeNode() {}
93+
* TreeNode(int val) { this.val = val; }
94+
* TreeNode(int val, TreeNode left, TreeNode right) {
95+
* this.val = val;
96+
* this.left = left;
97+
* this.right = right;
98+
* }
99+
* }
100+
*/
101+
class Solution {
102+
public int findBottomLeftValue(TreeNode root) {
103+
Queue<TreeNode> q = new ArrayDeque<>();
104+
q.offer(root);
105+
int ans = -1;
106+
while (!q.isEmpty()) {
107+
int n = q.size();
108+
for (int i = 0; i < n; i++) {
109+
TreeNode node = q.poll();
110+
if (i == 0) {
111+
ans = node.val;
112+
}
113+
if (node.left != null) {
114+
q.offer(node.left);
115+
}
116+
if (node.right != null) {
117+
q.offer(node.right);
118+
}
119+
}
120+
}
121+
return ans;
122+
}
123+
}
65124
```
66125

67126
### **C++**
@@ -107,6 +166,39 @@ public:
107166
};
108167
```
109168

169+
### **Go**
170+
171+
```go
172+
/**
173+
* Definition for a binary tree node.
174+
* type TreeNode struct {
175+
* Val int
176+
* Left *TreeNode
177+
* Right *TreeNode
178+
* }
179+
*/
180+
func findBottomLeftValue(root *TreeNode) int {
181+
q := []*TreeNode{root}
182+
ans := -1
183+
for n := len(q); n > 0; n = len(q) {
184+
for i := 0; i < n; i++ {
185+
node := q[0]
186+
q = q[1:]
187+
if i == 0 {
188+
ans = node.Val
189+
}
190+
if node.Left != nil {
191+
q = append(q, node.Left)
192+
}
193+
if node.Right != nil {
194+
q = append(q, node.Right)
195+
}
196+
}
197+
}
198+
return ans
199+
}
200+
```
201+
110202
### **...**
111203

112204
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* type TreeNode struct {
4+
* Val int
5+
* Left *TreeNode
6+
* Right *TreeNode
7+
* }
8+
*/
9+
func findBottomLeftValue(root *TreeNode) int {
10+
q := []*TreeNode{root}
11+
ans := -1
12+
for n := len(q); n > 0; n = len(q) {
13+
for i := 0; i < n; i++ {
14+
node := q[0]
15+
q = q[1:]
16+
if i == 0 {
17+
ans = node.Val
18+
}
19+
if node.Left != nil {
20+
q = append(q, node.Left)
21+
}
22+
if node.Right != nil {
23+
q = append(q, node.Right)
24+
}
25+
}
26+
}
27+
return ans
28+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
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+
* }
14+
* }
15+
*/
16+
class Solution {
17+
public int findBottomLeftValue(TreeNode root) {
18+
Queue<TreeNode> q = new ArrayDeque<>();
19+
q.offer(root);
20+
int ans = -1;
21+
while (!q.isEmpty()) {
22+
int n = q.size();
23+
for (int i = 0; i < n; i++) {
24+
TreeNode node = q.poll();
25+
if (i == 0) {
26+
ans = node.val;
27+
}
28+
if (node.left != null) {
29+
q.offer(node.left);
30+
}
31+
if (node.right != null) {
32+
q.offer(node.right);
33+
}
34+
}
35+
}
36+
return ans;
37+
}
38+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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 findBottomLeftValue(self, root: TreeNode) -> int:
9+
d = deque([root])
10+
ans = -1
11+
while d:
12+
n = len(d)
13+
for i in range(n):
14+
node = d.popleft()
15+
if i == 0:
16+
ans = node.val
17+
if node.left:
18+
d.append(node.left)
19+
if node.right:
20+
d.append(node.right)
21+
return ans

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /