按之字打印二叉樹


  
  
  
  
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)

附件列表

相關文章
相關標籤/搜索