zoukankan      html  css  js  c++  java
  • 107. Binary Tree Level Order Traversal II

    题目来源:

    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
  • 相关阅读:
    Java集合学习(8):LinkedList
    Java集合学习(7):ArrayList
    Java集合学习(6):LinkedHashSet
    数据结构与算法19—排序
    ZooKeeper基本介绍
    Java集合学习(5):LinkedHashMap
    Java集合学习(4):HashTable
    Java集合学习(3):HashSet
    java集合学习(2):Map和HashMap
    HTML DOM的创建,删除及替换
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10332222.html
Copyright © 2011-2022 走看看