107. Binary Tree Level Order Traversal II
发布时间:2020-12-14 05:13:04 所属栏目:大数据 来源:网络整理
导读:? 题目来源: https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ ? 自我感觉难度/真实难度: ? 题意: ? 分析: 层序遍历,然后把结果反一下返回值就可以了 ? 自己的代码: res= [] if not root: return res queue = collections.deque(
? 题目来源:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ ?自我感觉难度/真实难度:?题意:?分析:层序遍历,然后把结果反一下返回值就可以了 ?自己的代码:res=[] if not root: return res queue=collections.deque() queue.append(root) while queue: level=[] for i in range(len(queue)): node=queue.popleft() level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) res.append(level) return res.reverse() ? 最后一步有问题,reverse()函数没有返回值,应该使用?res[::-1]?? 代码效率/结果:Runtime:?44 ms,faster than?49.24%?of?Python3?online submissions for?Binary Tree Level Order Traversal II. ?优秀代码:? class Solution: def __init__(self): self.traverse=[] def levelOrderBottom(self,root): """ :type root: TreeNode :rtype: List[List[int]] """ if not root: return [] level = [root] self.traverse.append([node.val for node in level]) self.traverse_helper(level) return self.traverse[::-1] def traverse_helper(self,level): if not level: return queue = [] for node in level: if node.left: queue.append(node.left) if node.right: queue.append(node.right) if not queue: return self.traverse.append([node.val for node in queue]) self.print_traverse(queue) self.traverse_helper(queue) def print_traverse(self,level): for node in level: print(node.val) ? ? 代码效率/结果:?自己优化后的代码:?反思改进策略:1.实现层序的两种方法:使用队列,层序加点。使用字典格式,对号入座? ? 写题时间时长:1hour(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |