알고리즘

leetcode - 103. Binary Tree Zigzag Level Order Traversal

rockettttman 2021. 3. 24. 15:56

BFS (breadth first search)

 

 

지그재그로 출력해야한다.

Input: root = [3,9,20,null,null,15,7]
Output: [[3],[20,9],[15,7]]
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var zigzagLevelOrder = function(root) {
    
    var answer = [];
    
    if(!root) return [];    
    
    function insert(root, idx){
        if(root === null || root === undefined){
            return;
        }
        
        if(typeof answer[idx] === 'undefined'){
            answer.push([root.val]);
        }else{
            if(idx%2 === 0){
                answer[idx].push(root.val);
            }else {
                answer[idx].unshift(root.val);
            }
        }
        var nextIdx = idx+1;
        
        insert(root.left, nextIdx);
        insert(root.right, nextIdx);
        
    }
    insert(root, 0);
    
    return answer;
};