class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution: # 轉換思路,存儲的時候一直從左向右存儲,打印的時候根據不一樣的層一次打印 def zigzagLevelOrder(self, root): if not root: return [] levels, result, leftToRight = [root], [], True while levels: curValues, nextLevel = [], []#將左子樹和右子樹放在數組中,單獨看 for node in levels: curValues.append(node.val) if node.left: nextLevel.append(node.left) if node.right: nextLevel.append(node.right) if not leftToRight: curValues.reverse() if curValues: result.append(curValues) levels = nextLevel leftToRight = not leftToRight return resultpNode1 = TreeNode(8)pNode2 = TreeNode(6)pNode3 = TreeNode(10)pNode4 = TreeNode(5)pNode5 = TreeNode(7)pNode6 = TreeNode(9)pNode7 = TreeNode(11)pNode1.left = pNode2pNode1.right = pNode3pNode2.left = pNode4pNode2.right = pNode5pNode3.left = pNode6pNode3.right = pNode7S = Solution()aList = S.zigzagLevelOrder(pNode1)print(aList)