给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
    示例:
    二叉树:[3,9,20,null,null,15,7],
    3
    / \
    9 20
    / \
    15 7
    返回其层序遍历结果:

    [
    [3],
    [9,20],
    [15,7]
    ]

    方案1:递归的方式处理

    1. /**
    2. * Definition for a binary tree node.
    3. * class TreeNode {
    4. * public $val = null;
    5. * public $left = null;
    6. * public $right = null;
    7. * function __construct($value) { $this->val = $value; }
    8. * }
    9. */
    10. class Solution {
    11. public $result = [];
    12. /**
    13. * @param TreeNode $root
    14. * @return Integer[][]
    15. */
    16. function levelOrder($root) {
    17. if($root == null){
    18. return $this->result;
    19. }
    20. $this->dfs($root,0);
    21. return $this->result;
    22. }
    23. function dfs($root,$level){
    24. if($root == null){
    25. return ;
    26. }
    27. $this->result[$level][] = $root->val;
    28. if($root->left !== null){
    29. $this->dfs($root->left,$level+1);
    30. }
    31. if($root->right !== null){
    32. $this->dfs($root->right,$level+1);
    33. }
    34. }
    35. }

    方案2:

    /**
     * Definition for a binary tree node.
     * class TreeNode {
     *     public $val = null;
     *     public $left = null;
     *     public $right = null;
     *     function __construct($val = 0, $left = null, $right = null) {
     *         $this->val = $val;
     *         $this->left = $left;
     *         $this->right = $right;
     *     }
     * }
     */
    class Solution {
    
        /**
         * @param TreeNode $root
         * @return Integer[][]
         */
        function zigzagLevelOrder($root) {
            if($root == null){
                return [];
            }
            $allData = $levelData = [];
            $level = 0;
            array_push($allData,$root);
            while($num = count($allData)){
                for($i = 0;$i< $num;$i++){
                    $node = array_shift($allData);
                    $levelData[$level][] = $node->val;
                    if($node->left != null){
                        array_push($allData,$node->left);
                    }
                    if($node->right != null){
                        array_push($allData,$node->right);
                    }
                }
                $level ++;
            }
            return $levelData;
        }
    }
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。