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
    
                }
    
            }
    
        }
    
    }
  • 相关阅读:
    Mybatis连接配置文件详解
    MyBatis映射配置文件详解
    AGC 016 C
    CodeForces
    UVA
    某5道CF水题
    DZY Loves Chinese / DZY Loves Chinese II
    [SHOI2016] 黑暗前的幻想乡
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/kongkaikai/p/8533919.html
Copyright © 2011-2022 走看看