LeetCode 12.17(剑指offer)

76 阅读1分钟

3 从上到下打印二叉树II

//在I的基础上,附带了一个层数的参数
var levelOrder = function(root) {
    if(!root) return [];
    let tree = [];
    let tmp = [];
    tmp.push(root);
    tmp.push(0);
    tree.push(tmp);
    let res = [];
    while(tree.length!==0){
        let tmp = tree.shift();
        if(tmp[1]<res.length){
            res[tmp[1]].push(tmp[0].val);
        }
        else{
            let store = [];
            store.push(tmp[0].val);
            res.push([store]);
        }
        if(tmp[0].left){
            tree.push([tmp[0].left,tmp[1]+1]);
        }
        if(tmp[0].right){
            tree.push([tmp[0].right,tmp[1]+1]);
        }
    }
    return res;
};

32. 从上到下打印二叉树

//单数行reverse即可。记住Array.reverse()的库函数,此函数直接改变原数组。
var levelOrder = function(root) {
    if(!root) return [];
    let tree = [];
    let tmp = [];
    tmp.push(root);
    tmp.push(0);
    tree.push(tmp);
    let res = [];
    while(tree.length!==0){
        let tmp = tree.shift();
        if(tmp[1]<res.length){
            res[tmp[1]].push(tmp[0].val);
        }
        else{
            let store = [];
            store.push(tmp[0].val);
            res.push([store]);
        }
        if(tmp[0].left){
            tree.push([tmp[0].left,tmp[1]+1]);
        }
        if(tmp[0].right){
            tree.push([tmp[0].right,tmp[1]+1]);
        }
    }
    for(let i = 1;i<res.length;i+=2){
        res[i].reverse();
    }
    return res;
};