• 按之字打印二叉树



    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)

    附件列表

    • 相关阅读:
      sql 查询多列 小于某值
      C#读取EXCEL 并输出到文本框
      字典
      MVC 接收文件
      C# DataTable 转 json
      MVC 返回json数据
      C# 获得指定路径扩展名 , 去除扩展名
      C# 分割URL地址
      sql语句参数化问题
      VC++学习之网络编程中的套接字
    • 原文地址:https://www.cnblogs.com/zzxx-myblog/p/6595090.html
    Copyright © 2020-2023  润新知