Skip to content

统一迭代法

js
const getNodes = require('./getNodes')

function fn(root) {
    const res = []
    if(!root) return res
    const nodes = [root]
    while (nodes.length){
        const node = nodes.pop()
        if(!node){
            res.push(nodes.pop().value)
            continue
        }
        // 前序- 中左右
        node.right && nodes.push(node.right) // 右
        node.left && nodes.push(node.left) // 左
        nodes.push(node) // 中
        nodes.push(null) // 标记
    }

    return res
}

const root = getNodes(4)
console.log(JSON.stringify(root,null,'\t'))
console.log(fn(root))
const getNodes = require('./getNodes')

function fn(root) {
    const res = []
    if(!root) return res
    const nodes = [root]
    while (nodes.length){
        const node = nodes.pop()
        if(!node){
            res.push(nodes.pop().value)
            continue
        }
        // 前序- 中左右
        node.right && nodes.push(node.right) // 右
        node.left && nodes.push(node.left) // 左
        nodes.push(node) // 中
        nodes.push(null) // 标记
    }

    return res
}

const root = getNodes(4)
console.log(JSON.stringify(root,null,'\t'))
console.log(fn(root))