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 2e803a2

Browse files
feat: add solutions to lcof2 problem: No.046
1 parent 6421c40 commit 2e803a2

File tree

4 files changed

+197
-2
lines changed

4 files changed

+197
-2
lines changed

‎lcof2/剑指 Offer II 046. 二叉树的右侧视图/README.md‎

Lines changed: 102 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,22 +49,86 @@
4949

5050
<!-- 这里可写通用的实现逻辑 -->
5151

52+
层序遍历,取每层最后一个元素
53+
5254
<!-- tabs:start -->
5355

5456
### **Python3**
5557

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

5860
```python
59-
61+
# Definition for a binary tree node.
62+
# class TreeNode:
63+
# def __init__(self, val=0, left=None, right=None):
64+
# self.val = val
65+
# self.left = left
66+
# self.right = right
67+
class Solution:
68+
def rightSideView(self, root: TreeNode) -> List[int]:
69+
ans = []
70+
if not root:
71+
return ans
72+
d = deque([root])
73+
while d:
74+
n = len(d)
75+
for i in range(n):
76+
node = d.popleft()
77+
if i == n - 1:
78+
ans.append(node.val)
79+
if node.left:
80+
d.append(node.left)
81+
if node.right:
82+
d.append(node.right)
83+
return ans
6084
```
6185

6286
### **Java**
6387

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

6690
```java
67-
91+
/**
92+
* Definition for a binary tree node.
93+
* public class TreeNode {
94+
* int val;
95+
* TreeNode left;
96+
* TreeNode right;
97+
* TreeNode() {}
98+
* TreeNode(int val) { this.val = val; }
99+
* TreeNode(int val, TreeNode left, TreeNode right) {
100+
* this.val = val;
101+
* this.left = left;
102+
* this.right = right;
103+
* }
104+
* }
105+
*/
106+
class Solution {
107+
public List<Integer> rightSideView(TreeNode root) {
108+
List<Integer> ans = new ArrayList<>();
109+
if (root == null) {
110+
return ans;
111+
}
112+
Queue<TreeNode> q = new ArrayDeque<>();
113+
q.offer(root);
114+
while (!q.isEmpty()) {
115+
int n = q.size();
116+
for (int i = 0; i < n; i++) {
117+
TreeNode node = q.poll();
118+
if (i == n - 1) {
119+
ans.add(node.val);
120+
}
121+
if (node.left != null) {
122+
q.offer(node.left);
123+
}
124+
if (node.right != null) {
125+
q.offer(node.right);
126+
}
127+
}
128+
}
129+
return ans;
130+
}
131+
}
68132
```
69133

70134
### **C++**
@@ -116,6 +180,42 @@ public:
116180
};
117181
```
118182

183+
### **Go**
184+
185+
```go
186+
/**
187+
* Definition for a binary tree node.
188+
* type TreeNode struct {
189+
* Val int
190+
* Left *TreeNode
191+
* Right *TreeNode
192+
* }
193+
*/
194+
func rightSideView(root *TreeNode) []int {
195+
var ans []int
196+
if root == nil {
197+
return ans
198+
}
199+
q := []*TreeNode{root}
200+
for n := len(q); n > 0; n = len(q) {
201+
for i := 0; i < n; i++ {
202+
node := q[0]
203+
q = q[1:]
204+
if i == n - 1 {
205+
ans = append(ans, node.Val)
206+
}
207+
if node.Left != nil {
208+
q = append(q, node.Left)
209+
}
210+
if node.Right != nil {
211+
q = append(q, node.Right)
212+
}
213+
}
214+
}
215+
return ans
216+
}
217+
```
218+
119219
### **...**
120220

121221
```
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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 rightSideView(root *TreeNode) []int {
10+
var ans []int
11+
if root == nil {
12+
return ans
13+
}
14+
q := []*TreeNode{root}
15+
for n := len(q); n > 0; n = len(q) {
16+
for i := 0; i < n; i++ {
17+
node := q[0]
18+
q = q[1:]
19+
if i == n-1 {
20+
ans = append(ans, node.Val)
21+
}
22+
if node.Left != nil {
23+
q = append(q, node.Left)
24+
}
25+
if node.Right != nil {
26+
q = append(q, node.Right)
27+
}
28+
}
29+
}
30+
return ans
31+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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 List<Integer> rightSideView(TreeNode root) {
18+
List<Integer> ans = new ArrayList<>();
19+
if (root == null) {
20+
return ans;
21+
}
22+
Queue<TreeNode> q = new ArrayDeque<>();
23+
q.offer(root);
24+
while (!q.isEmpty()) {
25+
int n = q.size();
26+
for (int i = 0; i < n; i++) {
27+
TreeNode node = q.poll();
28+
if (i == n - 1) {
29+
ans.add(node.val);
30+
}
31+
if (node.left != null) {
32+
q.offer(node.left);
33+
}
34+
if (node.right != null) {
35+
q.offer(node.right);
36+
}
37+
}
38+
}
39+
return ans;
40+
}
41+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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 rightSideView(self, root: TreeNode) -> List[int]:
9+
ans = []
10+
if not root:
11+
return ans
12+
d = deque([root])
13+
while d:
14+
n = len(d)
15+
for i in range(n):
16+
node = d.popleft()
17+
if i == n - 1:
18+
ans.append(node.val)
19+
if node.left:
20+
d.append(node.left)
21+
if node.right:
22+
d.append(node.right)
23+
return ans

0 commit comments

Comments
(0)

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