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
    
                }
    
            }
    
        }
    
    }
  • 相关阅读:
    《构建之法》阅读笔记02
    《构建之法》阅读笔记01
    学习进度
    “校园知网”端午假期冲刺计划书
    学习进度
    计算最长英语单词链
    第一周冲刺_周日总结
    构建之法阅读笔记03
    第一周冲刺_周六总结
    软件工程概论第十四周学习进度
  • 原文地址:https://www.cnblogs.com/kongkaikai/p/8533919.html
Copyright © 2011-2022 走看看