Leetcode基础刷题PHP解析(103. Binary Tree Zigzag Level Order Traversal)

栏目: PHP · 发布时间: 7年前

2 0 1 9 -6-19   星 期三   开 始 吧

上 一 题 链 接 Leetcode基础刷题之 PHP 解析(20. Valid Parentheses)

Leetcode基础刷题PHP解析(103. Binary Tree Zigzag Level Order Traversal)

题 目 描 述

这道题的第一版是二叉数的层次遍历( Leetcode基础刷题之PHP解析(102. Binary Tree Level Order Traversal) ),这一版让我们按照z字形遍历二叉树。什么意思呢,就是说如果当前层是从左往右遍历,那么下一层就从右往左遍历。

题 目 分 析

解法和层次遍历思路差不多,只是每次用一个标识记录一下当前应该从哪个方向开始遍历,如果是从左往右的话,把当前层的结点值以队列的形式插入到当前集合中,如果是右往左,把当前结点的值依次压入当前栈集合中,然后每层结束,小集合push到大集合中,直到最后。

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     public $val = null;
 *     public $left = null;
 *     public $right = null;
 *     function __construct($value) { $this->val = $value; }
 * }
 */
class Solution {

    /**
     * @param TreeNode $root
     * @return Integer[][]
     */
    function zigzagLevelOrder($root) {
        if(empty($root)) return [];
        $stack=[];
        $res=[];
        array_push($stack,$root);
         $real=true;  //标识方向
        while(!empty($stack)){
            $num=count($stack);
             $level=[];
            $stack2=[];
            foreach($stack as $node){
                if($real) array_push($level,$node->val);
                else array_splice($level,0,0,$node->val); 
                if($node->left) array_push($stack2,$node->left);
                if($node->right) array_push($stack2,$node->right);
            }
             $real = !$real;
            $stack = $stack2;
            array_push($res,$level);  
        }
        return $res;
    }
}

另外我发现leetcode只要你不是指数级的运行时间,这里的success结果你千万不要相信,有毒,想了解自己写的代码效率,还是用大O分析。

Leetcode基础刷题PHP解析(103. Binary Tree Zigzag Level Order Traversal)

Github整理地址 : https://github.com/wuqinqiang/leetcode-php


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

自制编译器

自制编译器

[日] 青木峰郎 / 严圣逸、绝云 / 人民邮电出版社 / 2016-6 / 99.00元

本书将带领读者从头开始制作一门语言的编译器。笔者特意为本书设计了CЬ语言,CЬ可以说是C语言的子集,实现了包括指针运算等在内的C语言的主要部分。本书所实现的编译器就是C Ь语言的编译器, 是实实在在的编译器,而非有诸多限制的玩具。另外,除编译器之外,本书对以编译器为中心的编程语言的运行环境,即编译器、汇编器、链接器、硬件、运行时环境等都有所提及,介绍了程序运行的所有环节。一起来看看 《自制编译器》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具