Issues (64)

leetcode/BinaryTreeZigzagLevelOrderTraversal.php (1 issue)

1
<?php
2
3
declare(strict_types=1);
4
5
namespace leetcode;
6
7
use leetcode\util\TreeNode;
8
9
class BinaryTreeZigzagLevelOrderTraversal
10
{
11
    public static function zigzagLevelOrder(TreeNode $root): array
12
    {
13
        if (empty($root)) {
14
            return [];
15
        }
16
        [$ans, $level, $queue] = [[], 1, []];
17
        $queue = [$root];
18
        while ($queue) {
19
            [$curr, $n] = [[], count($queue)];
20
            for ($i = 0; $i < $n; $i++) {
21
                /** @var \leetcode\util\TreeNode $node */
22
                $node = array_shift($queue);
23
                if ($node instanceof TreeNode && $node->val) {
24
                    if ($level % 2 === 0 && $node->val) {
25
                        array_unshift($curr, $node->val);
26
                    } else {
27
                        array_push($curr, $node->val);
28
                    }
29
30
                    if ($node->left) {
31
                        array_push($queue, $node->left);
32
                    }
33
                    if ($node->right) {
34
                        array_push($queue, $node->right);
35
                    }
36
                }
37
            }
38
            if ($curr) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $curr of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
39
                array_push($ans, $curr);
40
            }
41
            $level++;
42
        }
43
44
        return $ans;
45
    }
46
}
47