2 0 1 9 -6-19 星 期三 开 始 吧
上 一 题 链 接 Leetcode基础刷题之 PHP 解析(20. Valid Parentheses)
题 目 描 述
这道题的第一版是二叉数的层次遍历( 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分析。
Github整理地址 : https://github.com/wuqinqiang/leetcode-php
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Apache Flink 零基础入门(一):基础概念解析
- Apache Flink 零基础入门(一):基础概念解析
- JStorm 源码解析:基础线程模型
- React Hooks 解析(上):基础
- TypeScript基础入门之模块解析(一)
- TypeScript基础入门之模块解析(二)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
离心力:互联网历史与数字化未来
[英] 乔尼·赖安(Johnny Ryan) / 段铁铮 / 译言·东西文库/电子工业出版社 / 2018-2-1 / 68.00元
★一部详实、严谨的互联网史著作; ★哈佛、斯坦福等高校学生必读书目; ★《互联网的未来》作者乔纳森·L. 齐特雷恩,《独立报》《爱尔兰时报》等知名作者和国外媒体联合推荐。 【内容简介】 虽然互联网从诞生至今,不过是五六十年,但我们已然有必要整理其丰富的历史。未来的数字世界不仅取决于我 们的设想,也取决于它的发展历程,以及互联网伟大先驱们的理想和信念。 本书作者乔尼· ......一起来看看 《离心力:互联网历史与数字化未来》 这本书的介绍吧!