2019-08-23 剑指 把二叉树打印成多行

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)  # 函数参数没写全
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容