unliar / unliar.github.io

一个已经不再使用的静态博客,新的博客在后边。
https://happysooner.com
0 stars 0 forks source link

二叉树的遍历 #38

Open unliar opened 3 years ago

unliar commented 3 years ago
const node = {
    val: 'F',
    left: {
        val: 'B',
        left: { val: 'A' },
        right: { val: 'D', left: { val: 'C' }, right: { val: 'E' } }
    },
    right: { val: 'G', right: { val: 'I', left: { val: 'H' } } }
};

// 简单遍历
const Travel = (node)=>{
    if (!node) {
        return []
    }
    const result=[]
    const src = [node]
    while (src.length>0) {
        const n = src.shift() // 删除第一位节点
        result.push(n.val) // 推进结果列表
        if (n.left) {
            src.push(n.left)
        }
        if (n.right) {
            src.push(n.right)
        }
    }
    return result
}

// 层序遍历
const levelOrder = function(root) {
    if(!root)return [];
    const queue =[root];
    const res= [];
    let level = 0;
    // 判断同层数组
    while(queue.length){
        res[level]= [];
        let levelNum = queue.length;
        while(levelNum--){
            const node = queue.shift();
            res[level].push(node.val);
            node.left&&queue.push(node.left);
            node.right&&queue.push(node.right);
        }
        level++
    }