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基础入门之模块解析(二)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
计算机科学概论(第11版)
J. Glenn Brookshear / 刘艺、肖成海、马小会、毛倩倩 / 人民邮电出版社 / 2011-10-1 / 69.00元
本书多年来一直深受世界各国高校师生的欢迎,是美国哈佛大学、麻省理工学院、普林斯顿大学、加州大学伯克利分校等许多著名大学的首选教材,对我国的高校教学也产生了广泛影响。 本 书以历史眼光,从发展的角度、当前的水平以及现阶段的研究方向等几个方面,全景式描绘了计算机科学各个子学科的主要领域。在内容编排上,本书很好地兼顾了 学科广度和主题深度,把握了最新的技术趋势。本书用算法、数据抽象等核心思想贯穿各......一起来看看 《计算机科学概论(第11版)》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
随机密码生成器
多种字符组合密码