pwstrick / daily

一份搜集的前端面试题目清单、面试相关以及各类学习的资料(不局限于前端)
2.35k stars 243 forks source link

二叉树的层序遍历 #1063

Open pwstrick opened 4 years ago

pwstrick commented 4 years ago

102. 二叉树的层序遍历

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    if(!root)
        return [];
    let queue = [root];
    let result = [],
        depth = 0;
    while(queue.length > 0) {
        if(!result[depth]) {                    //初始化数组
            result[depth] = [];
        }
        let length = queue.length;
        queue.forEach(node => {
            result[depth].push(node.val);       //加入结点值
        });
        for(let i=0; i<length; i++) {
            queue[i].left && queue.push(queue[i].left);
            queue[i].right && queue.push(queue[i].right);
        }
        queue.splice(0, length);
        depth++;    //深度加一
    }
    return result;
};