1. class TreeNode:
  2.    def __init__(self, x):
  3.        self.val = x
  4.        self.left = None
  5.        self.right = None
  6. class Solution:
  7.    # 转换思路,存储的时候一直从左向右存储,打印的时候根据不同的层一次打印
  8.    def zigzagLevelOrder(self, root):
  9.        if not root:
  10.            return []
  11.        levels, result, leftToRight = [root], [], True
  12.        while levels:
  13.            curValues, nextLevel = [], []#将左子树和右子树放在数组中,单独看
  14.            for node in levels:
  15.                curValues.append(node.val)
  16.                if node.left:
  17.                    nextLevel.append(node.left)
  18.                if node.right:
  19.                    nextLevel.append(node.right)
  20.            if not leftToRight:
  21.                curValues.reverse()
  22.            if curValues:
  23.                result.append(curValues)
  24.            levels = nextLevel
  25.            leftToRight = not leftToRight
  26.        return result
  27. pNode1 = TreeNode(8)
  28. pNode2 = TreeNode(6)
  29. pNode3 = TreeNode(10)
  30. pNode4 = TreeNode(5)
  31. pNode5 = TreeNode(7)
  32. pNode6 = TreeNode(9)
  33. pNode7 = TreeNode(11)
  34. pNode1.left = pNode2
  35. pNode1.right = pNode3
  36. pNode2.left = pNode4
  37. pNode2.right = pNode5
  38. pNode3.left = pNode6
  39. pNode3.right = pNode7
  40. S = Solution()
  41. aList = S.zigzagLevelOrder(pNode1)
  42. print(aList)

附件列表

     

    posted on 2017-03-21 16:34  zx0801  阅读(325)  评论(0编辑  收藏  举报