剑指 Offer II 046. 二叉树的右侧视图
题目要求
leetcode地址
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例1
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
示例2
输入: [1,null,3]
输出: [1,3]
示例3
输入: []
输出: []
提示
- 二叉树的节点个数的范围是 [0,100]
- -100 <= Node.val <= 100
思路
DFS
深度优先搜索,看到该题目,我们的首先想到的应该是dfs, 步骤:- 从根节点一直沿着右侧节点遍历,最右侧节点全部为待返回的值,直接加入结果即可,记录层高deep;
- 遍历左边节点,如果curDeep > deep,且node.right有值,则为右侧元素加入结果;
- 递归;
执行过程:
(1) 第一轮右侧直接遍历到最底,找到1,3,6,此时deep等于2(从0开始的)
(2) 第二轮从2开始遍历,由于2、4,层高均不大于deep,跳过
(3) 第三轮从5开始,找到8,此时deep=3
(4) 第四轮找到9,结束。结果为1,3,6,8,9
BFS
没电了,待补充, 步骤:- ;
- ;
- ;
代码实现(java)
1 |
|
代码实现(golang)
1 |
|
剑指 Offer II 046. 二叉树的右侧视图
https://liuxx1106.github.io/2023/08/01/algorithm-offer046/