zoukankan      html  css  js  c++  java
  • 按之字打印二叉树


    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)

    附件列表

    • 相关阅读:
      3、二进制的秘闻和不同进制间的转换
      Hello World!
      HDU5883 The Best Path(欧拉回路 | 通路下求XOR的最大值)
      Codeforces 722C(并查集 + 思维)
      Floyd 算法求多源最短路径
      vim 配置
      STL容器 -- Vector
      STL容器 -- Bitset
      HDU 5707 Combine String(动态规划)
      HDU 5876 Sparse Graph(补图上BFS)
    • 原文地址:https://www.cnblogs.com/zzxx-myblog/p/6595090.html
    Copyright © 2011-2022 走看看