zoukankan      html  css  js  c++  java
  • leetCode :103. Binary Tree Zigzag Level Order Traversal (swift) 二叉树Z字形层次遍历

    // 103. Binary Tree Zigzag Level Order Traversal
    
    // https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/description/
    
    // swift
    
    // Definition for a binary tree node.
    
     
    
    public class TreeNode {
    
        public var val: Int
    
        public var left: TreeNode?
    
        public var right: TreeNode?
    
        public init(_ val: Int) {
    
            self.val = val
    
            self.left = nil
    
            self.right = nil
    
        }
    
    }
    
     
    
    class Solution {
    
        func zigzagLevelOrder(_ root: TreeNode?) -> [[Int]] {
    
            guard root != nil else {
    
                return [[Int]]()
    
            }
    
            func nextLevelResult(_ nodes: [TreeNode], flag: Bool) -> [TreeNode] {
    
                var result = [TreeNode]()
    
                for node in nodes.reversed() {
    
                    if flag {
    
                        if (node.left != nil) {
    
                            result.append(node.left!)
    
                        }
    
                        if (node.right != nil) {
    
                            result.append(node.right!)
    
                        } 
    
                    } else {
    
                        if (node.right != nil) {
    
                            result.append(node.right!)
    
                        }
    
                        if (node.left != nil) {
    
                            result.append(node.left!)
    
                        }
    
                    }
    
                }
    
                return result
    
            }
    
            
    
            var result = [[TreeNode]]()
    
            var temp = [root!]
    
            var flag = false
    
            while temp.count > 0 {
    
                result .append(temp)
    
                temp = nextLevelResult(temp, flag: flag)
    
                flag = !flag
    
            }
    
            
    
            return result.map { nodes in
    
                nodes.map { node in
    
                    node.val
    
                }
    
            }
    
        }
    
    }
  • 相关阅读:
    Best HTTP
    Unity3D游戏轻量级xlua热修复框架
    线段树
    7.1
    BZOJ 3011: [Usaco2012 Dec]Running Away From the Barn( dfs序 + 主席树 )
    BZOJ 3585: mex( 离线 + 线段树 )
    2015暑假集训
    BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛( dp )
    BZOJ 2693: jzptab( 莫比乌斯反演 )
    2015.7.31
  • 原文地址:https://www.cnblogs.com/kongkaikai/p/8533919.html
Copyright © 2011-2022 走看看