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
    
                }
    
            }
    
        }
    
    }
  • 相关阅读:
    Oracle(二)常用操作语句
    Oracle(一)概念理解
    Spring MVC实现文件上传和下载
    Spring MVC 的执行流程
    Spring MVC原理及配置详解
    idea创建maven web项目
    Spring Bean的生命周期
    integer和int的区别
    web项目搜索框智能提示
    html-tab page
  • 原文地址:https://www.cnblogs.com/kongkaikai/p/8533919.html
Copyright © 2011-2022 走看看