leetcode-199-二叉树的右视图
题目描述:
第一次提交:BFS O(N) O(N)
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def rightSideView(self, root): """ :type root: TreeNode :rtype: List[int] """ if not root: return [] stack = [root] res = [] while stack: temp = [] res.append(stack[0].val) for i in stack: if i.right: temp.append(i.right) if i.left: temp.append(i.left) stack = temp return res
方法二:DFS 递归实现: O(N) O(N)
class Solution(object): def rightSideView(self, root): """ :type root: TreeNode :rtype: List[int] """ d={} def f(r,i): if r: d[i]=r.val f(r.left,i+1) f(r.right,i+1) f(root,0) return list(d.values())
DFS 迭代实现:
class Solution: def rightSideView(self, root: TreeNode) -> List[int]: if not root:return [] d = {} stack = [(root,0)] while stack: node,depth = stack.pop() d[depth] = node.val if node.right: stack.append((node.right,depth+1)) if node.left: stack.append((node.left,depth+1)) return list(d.values())