题目描述:输出二叉树的右视图。
题目链接:Leetcode 199. Binary Tree Right Side View
思路:一般二叉树的题目就是层序遍历、先根序遍历、中根序遍历、后根序遍历的一个变体,所以这个题目如果单纯只要右边的话遇到[1,2,3,4]这种情况左子树就无法出来,所以比较好的思路就是层序遍历,找到每层最右的结果。
如果层序遍历,需要分层保存结果的话,就要加一个内层循环。
class Solution:
def rightSideView(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
if not root:
return []
ans = []
queue = [root]
while(queue):
nextNode = []
cs = []
for r in queue:
cs.append(r.val)
if r.left:
nextNode.append(r.left)
if r.right:
nextNode.append(r.right)
if cs:
ans.append(cs[-1])
queue = nextNode
return ans