首页 > 其他 > 详细

广度优先遍历多叉树

时间:2021-05-31 11:30:57      阅读:33      评论:0      收藏:0      [点我收藏+]

广度优先遍历多叉树

  • 层序遍历多叉树,判断是否有等于给定值target的结点

  • 给定多叉树:

    const root = {
        value: 4,
        children: [{
                value: 2,
                children: [{
                        value: 1,
                        children: []
                    },
                    {
                        value: 3,
                        children: []
                    }
                ]
            },
            {
                value: 6,
                children: [{
                    value: 5,
                    children: []
                }]
            }
        ]
    };
    

    技术分享图片

  • 代码实现:

    function wideFirst(root, target) {
        var queue = [];
        queue.push(root); // 将根结点装入队列
    
        while (queue.length !== 0) {
            var node = queue.shift(); // 获取队列第一个结点并移除出队列
            if (node.value === target) {
                return true; // 找到符合条件的结点,返回true
            } else if (node.children.length > 0) {
                // 将当前节点的所有子节点装入队列
                for (let i = 0; i < node.children.length; i++) {
                    queue.push(node.children[i]);
                }
            }
        }
        return false; // 遍历结束,返回false
    }
    
    1. 创建队列queue,根节点root装入队列
    2. 开始遍历queue,当queue的长度为0时结束循环
    3. 判断当前结点是否符合条件,符合则返回true
    4. 每个结点的子节点按顺序装入queue
    5. queue遍历完成,代表多叉树中没有符合条件的结点,返回false

    技术分享图片

广度优先遍历多叉树

原文:https://www.cnblogs.com/chenjy259/p/14829552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!