Skip to content

Commit abc16fc

Browse files
committed
tree:层序遍历
Change-Id: I68fb307fb916f17a03c0640d26572829770f6a1e
1 parent a57d5d1 commit abc16fc

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
* @lc app=leetcode.cn id=199 lang=golang
3+
*
4+
* [199] 二叉树的右视图
5+
*
6+
* https://leetcode-cn.com/problems/binary-tree-right-side-view/description/
7+
*
8+
* algorithms
9+
* Medium (64.85%)
10+
* Likes: 478
11+
* Dislikes: 0
12+
* Total Accepted: 112.5K
13+
* Total Submissions: 173.4K
14+
* Testcase Example: '[1,2,3,null,5,null,4]'
15+
*
16+
* 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
17+
*
18+
* 示例:
19+
*
20+
* 输入: [1,2,3,null,5,null,4]
21+
* 输出: [1, 3, 4]
22+
* 解释:
23+
*
24+
* ⁠ 1 <---
25+
* ⁠/ \
26+
* 2 3 <---
27+
* ⁠\ \
28+
* ⁠ 5 4 <---
29+
*
30+
*
31+
*/
32+
33+
// @lc code=start
34+
/**
35+
* Definition for a binary tree node.
36+
* type TreeNode struct {
37+
* Val int
38+
* Left *TreeNode
39+
* Right *TreeNode
40+
* }
41+
*/
42+
43+
// 层次遍历,每层取最后一个节点即可。
44+
func rightSideView(root *TreeNode) []int {
45+
if root == nil {
46+
return []int{}
47+
}
48+
ret := []int{}
49+
queue := []*TreeNode{root}
50+
for len(queue) > 0 {
51+
level := []*TreeNode{}
52+
var last int
53+
for _, node := range queue {
54+
last = node.Val
55+
if node.Left != nil {
56+
level = append(level, node.Left)
57+
}
58+
if node.Right != nil {
59+
level = append(level, node.Right)
60+
}
61+
}
62+
ret = append(ret, last)
63+
queue = level
64+
}
65+
return ret
66+
}
67+
68+
// @lc code=end
69+

0 commit comments

Comments
 (0)