LeetCode-in-All

94. Binary Tree Inorder Traversal

Easy

Given the root of a binary tree, return the inorder traversal of its nodes’ values.

Example 1:

Input: root = [1,null,2,3]

Output: [1,3,2]

Example 2:

Input: root = []

Output: []

Example 3:

Input: root = [1]

Output: [1]

Example 4:

Input: root = [1,2]

Output: [2,1]

Example 5:

Input: root = [1,null,2]

Output: [1,2]

Constraints:

Follow up: Recursive solution is trivial, could you do it iteratively?

Solution

/**
 * 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[]
     */
    public function inorderTraversal($root) {
        if ($root == null) {
            return array();
        }
        $answer = array();
        $this->inorderTraversalLocal($root, $answer);
        return $answer;
    }

    function inorderTraversalLocal($root, &$answer) {
        if ($root == null) {
            return;
        }
        if ($root->left != null) {
            $this->inorderTraversalLocal($root->left, $answer);
        }
        array_push($answer, $root->val);
        if ($root->right != null) {
            $this->inorderTraversalLocal($root->right, $answer);
        }
    }
}