分享

102. Binary Tree Level Order Traversal

 jasonbetter 2017-12-29
##
## https:///problems/binary-tree-level-order-traversal/description/
##  
##
class TreeNode(object):
    def __init__(self, val=None, left=None, right=None):
        self.val =  val
        self.left  = left
        self.right = right

class Solution(object):
   def levelOrder(self, root):
       ans, level = [], [root]  #list
       while root and level:
          ans.append([node.val for node in level])
          LRpair = [(node.left, node.right) for node in level]
          level = [leaf for LR in LRpair for leaf in LR if leaf]
       return ans
   def levelOrder_2(self, root):
       level = [root]
       ans = []
       while level:
          ans.append([node.val for node in level])
          level =[ n for node in level for n in (node.left, node.right) if n]
       return ans


if __name__ == "__main__" :
#       D
#    B      E      
#  A   C      G
#            F
  tree=TreeNode('D',TreeNode('B',TreeNode('A'),TreeNode('C')),TreeNode('E',right=TreeNode('G',TreeNode('F'))))
  s = Solution()
  #ans = new Solution().levelOrder(tree)
  ans = s.levelOrder(tree)
  print(ans)
~             


##
## https:///problems/binary-tree-level-order-traversal/description/
## 
##
class TreeNode(object):
    def __init__(self, val=None, left=None, right=None):
        self.val =  val
        self.left  = left
        self.right = right

class Solution(object):
   def levelOrder(self, root):
       ans, level = [], [root]  #list
       while root and level:
          ans.append([node.val for node in level])
          LRpair = [(node.left, node.right) for node in level]
          #level = [leaf for LR in LRpair for leaf in LR if leaf]
          level = []
          for LR in LRpair:
              print("----LR---")
              print(LR)
              for leaf in LR:
                 print("----leaf---")
                 print(leaf)
                 if leaf != None:
                    level.append(leaf)
                 else:
                    print("not put in level")
       return ans


if __name__ == "__main__" :
#       D
#    B      E     
#  A   C      G
#            F
  tree=TreeNode('D',TreeNode('B',TreeNode('A'),TreeNode('C')),TreeNode('E',right=TreeNode('G',TreeNode('F'))))
  s = Solution()
  #ans = new Solution().levelOrder(tree)
  ans = s.levelOrder(tree)
  print(ans)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约