10min,逻辑很简单,使用两个栈,就不用考虑下一层有多少个节点了
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot:TreeNode):
if not pRoot:return []
q1,q2=deque(),deque()
res=[]
q1.append(pRoot)
while q1:
tmp=[]
while q1:
front = q1.popleft()
tmp.append(front.val)
if front.left:q2.append(front.left)
if front.right:q2.append(front.right)
res.append(tmp)
q1=q2
q2=deque()
return res
7min,是前序遍历,但是通过函数参数把层数记录下来,载入到相对应的list中,特别清晰易懂,很妙
class Solution2:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
res=[]
self.dfs(pRoot,1,res)
return res
def dfs(self,pRoot:TreeNode,depth,res:List):
if not pRoot:return
if depth>len(res):res.append([pRoot.val]) # 笔误写成res
else:res[depth-1].append(pRoot.val)
self.dfs(pRoot.left,depth+1,res)
self.dfs(pRoot.right,depth+1,res) # 函数参数没写全
网友评论