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)

    附件列表

    • 相关阅读:
      arcims(HtmlView)开发经验总结《转》
      Oracle sequence
      ajax 简介
      PHP:路在何方?
      ArcIMS初级教程(4)
      设计开发必须收藏的资源网站
      Win2008+IIS7.0+VS2008 在测试调试网站时报错,紧急求救!
      动态生成客户端数组
      解决MySQL不允许从远程访问的方法
      MySql中delimiter的作用是什么
    • 原文地址:https://www.cnblogs.com/zzxx-myblog/p/6595090.html
    Copyright © 2011-2022 走看看