zoukankan      html  css  js  c++  java
  • Binary Tree Zigzag Level Order Traversal

    # Definition for a  binary tree node
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    class Solution:
        # @param root, a tree node
        # @return a list of lists of integers
        def zigzagLevelOrder(self, root):
            res=[]
            nodes=[]
            nodes.append(root)
            order=1 #表示这一层显示的顺序
    
            while(nodes!=[]):
                level=[]  #存放这一层的val值
                for i in range(len(nodes)):
                    if nodes[i]!=None:
                        level.append(nodes[i].val)
                if level!=[]:
                    if order==1: # 顺序存放
                        res.append(level)
                    else:  # 反序存放
                        antitone_level=[]
                        for j in range(len(level)):
                            antitone_level.append(level[len(level)-1-j])
                        res.append(antitone_level)
                    order=order*(-1)
    
                temp=[]  #将这一层节点的叶节点存放在nodes中
                for i in range(len(nodes)):
                    if nodes[i]!=None:
                        temp.append(nodes[i].left)
                        temp.append(nodes[i].right)
                nodes=temp
    
            print(res)
            return res
    
    if __name__ == '__main__':
        root=TreeNode(3)
        l=TreeNode(9)
        r=TreeNode(20)
        rl=TreeNode(15)
        rr=TreeNode(7)
        root.left=l
        root.right=r
        r.left=rl
        r.right=rr
    
        s=Solution()
        s.zigzagLevelOrder(root)
  • 相关阅读:
    十三.基础邮件服务、parted分区工具、交换分区、链路聚合
    十二.虚拟Web主机
    十一.简单MariaDB数据库的管理
    十.iSCSI网络磁盘
    九.配置SMB共享(Samba共享)
    八.防火墙相关操作
    bzoj3132
    bzoj4753
    codeforces round #418 div 2
    ural1519
  • 原文地址:https://www.cnblogs.com/iois/p/4026155.html
Copyright © 2011-2022 走看看