Binary Tree Inorder Traversal

Problem Description

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]

Explanation:

Example 2:

Input: root = [1,2,3,4,5,null,8,null,null,6,7,9]

Output: [4,2,6,5,7,1,3,9,8]

Explanation:

Example 3:

Input: root = []

Output: []

Example 4:

Input: root = [1]

Output: [1]

 

Constraints:

 

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

Solution (JavaScript)

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var inorderTraversal = function(root) {
    function traverse(node, rst) {
        if(node.left) {
            traverse(node.left, rst);
        }
        rst.push(node.val);
        if(node.right) {
            traverse(node.right, rst);
        }
    }
    
    const rst = [];
    if(!root) {
        return rst;
    } else {
        traverse(root, rst);
        return rst;
    }
};