[二叉树] 二叉树的层次遍历

思路:借助于一个队列,实现从上到下,每一层从左到右的遍历

首先将根节点入队,算是完成了初始化

然后不断循环,直到队列为空

在每一轮的循环中,从队列中取出一个节点(第一次循环当然取出的就是根节点了),访问它
如果这个节点有左节点,把左节点放进队列
如果这个节点有右节点,把右节点放进队列
然后进入下一轮循环

function levelIterate(root)
{
    const nodes = [] // 节点队列
    nodes.unshift(root) // 根节点入队

    while(nodes.length > 0)
    {
        const current = nodes.pop() // 队列中取出一个节点
        touch(current) // 访问该节点
        if(current.left)
        {
            nodes.unshift(current.left)
        }
        if(current.right)
        {
            nodes.unshift(current.right)
        }
    }
}

function touch(node)
{
    console.log(node.value)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容