## ## 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) |
|
来自: jasonbetter > 《leetcode》