码迷,mamicode.com
首页 > 其他好文 > 详细

广度优先遍历多叉树

时间:2021-06-02 18:13:29      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:info   ima   let   function   ret   root   代码   图片   push   

广度优先遍历多叉树

  • 层序遍历多叉树,判断是否有等于给定值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

    技术图片

广度优先遍历多叉树

标签:info   ima   let   function   ret   root   代码   图片   push   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!