加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读