2019-10-13 吴亲库里 库里的深夜食堂
其实说白了也就是求从二叉树的右边看,你能看到的每一层的值,我是这样理解的。
我们需要保存的是每一层最靠近右边的值,使用两个数组,一个数组用来存储最后的结果,另一个当做队列,我们再遍历每层的节点的时候,如果她存在下一层的节点,就需要保存当前结点的下一层结点的值,因为我们访问的过程中,是从左往右遍历的,所以在放置下一层结点的时候,最右边的节点当然在数组的最后,所以每次只需要拿当前数组最后一个结点的值放入到最终节点即可。
/**
* 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 rightSideView($root) {
$res=[];
$queue=[];
if(!$root) return $res;
array_push($queue,$root);
while(!empty($queue)){
$res[]=end($queue)->val;
$size=count($queue);
for($i=0;$i<$size;$i++){
$node= array_shift($queue);
if($node->left) array_push($queue,$node->left);
if($node->right) array_push($queue,$node->right);
}
}
return $res;
}
}