美文网首页
二叉树的锯齿形层次遍历

二叉树的锯齿形层次遍历

作者: 而立之年的技术控 | 来源:发表于2019-12-24 18:46 被阅读0次

    说一点:遇到这种层次遍历(不管他什么奇葩要求),思路只有一条:那就是使用【两个辅助栈】轻松解决

    WechatIMG23.jpeg
    class Solution:
        def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
            if not root:
                return None
            stack1 = [root]
            stack2 = []
            ret = []
    
            while stack1 or stack2:
                if stack1:
                    tmpList = []
                    while stack1:
                        tmp = stack1[0]
                        tmpList.append(tmp.val)
                        if tmp.left:
                            stack2.append(tmp.left)
                        if tmp.right:
                            stack2.append(tmp.right)
                        del stack1[0]
                    ret.append(tmpList)
                
                if stack2:
                    tmpList = []
                    while stack2:
                        tmp = stack2.pop()
                        tmpList.append(tmp.val)
                        if tmp.right:
                            stack1.insert(0,tmp.right)
                        if tmp.left:
                            stack1.insert(0,tmp.left)
                    ret.append(tmpList)
            return ret
    

    相关文章

      网友评论

          本文标题:二叉树的锯齿形层次遍历

          本文链接:https://www.haomeiwen.com/subject/wovfoctx.html