博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-03-二叉树的锯齿层次遍历
阅读量:5237 次
发布时间:2019-06-14

本文共 2266 字,大约阅读时间需要 7 分钟。

题目描述:

方法一:

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:        if not root:            return []        stack = [root]        ans = []        while stack:            tem_stack=[]            tem_ans = []            for i in stack:                tem_ans.append(i.val)                if i.left:                    tem_stack.append(i.left)                if i.right:                    tem_stack.append(i.right)            stack = tem_stack            ans.append(tem_ans)        for i in range(len(ans)):            if i%2!=0:                ans[i] = ans[i][::-1]        return ans

另:

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:        if not root:            return []        stack = [root]        ans = []        depth = 0        while stack:            tem_ans,tem_stack = [],[]            for i in stack:                tem_ans.append(i.val)                if i.left:                    tem_stack.append(i.left)                if i.right:                    tem_stack.append(i.right)            if depth%2 == 0:                ans.append(tem_ans)            else:                ans.append(tem_ans[::-1])            stack = tem_stack            depth += 1        return ans

方法二:递归

# Definition for a binary tree node.# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:        res = []        def helper(root, depth):             if not root: return             if len(res) == depth:                 res.append([])             if depth % 2 == 0:                res[depth].append(root.val)             else:                 res[depth].insert(0, root.val)             helper(root.left, depth + 1)             helper(root.right, depth + 1)         helper(root, 0)         return res

 

转载于:https://www.cnblogs.com/oldby/p/11184361.html

你可能感兴趣的文章
Perl IO:随机读写文件
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>
vue:axios二次封装,接口统一存放
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>
图片加载失败显示默认图片占位符
查看>>
【★】浅谈计算机与随机数
查看>>