二叉树实战(三) - 二叉树层序遍历方式(广度优先遍历)

在 实战 - 二叉树的遍历方式 里面我们实践了遍历的方式,主要包括 前序遍历、中序遍历、后续遍历。这三种方式都属于深度优先遍历方式。

今天我们实战一下广度优先遍历的方式 - 层序遍历。

    public Queue<Key> layerErgodic() {
        ConcurrentLinkedQueue<Key> keys = new ConcurrentLinkedQueue<>();
        ConcurrentLinkedQueue<Node> nodes = new ConcurrentLinkedQueue<>();
        // 默认,往队列里面放入根结点
        nodes.add(root);
        while (!nodes.isEmpty()) {
            // 弹出队列中的一个结点,把key放到keys中
            Node n = nodes.poll();
            keys.add(n.key);
            // 判断当前结点还有没有左子结点,如果有,则放到nodes中
            if (n.left != null) {
                nodes.add(n.left);
            }
            // 判断当前结点还有没有右子结点,如果有,则放到nodes中
            if (n.right != null) {
                nodes.add(n.right);
            }
        }
        return keys;
    }

 

posted @ 2020-05-03 17:57  灰色飘零  阅读(156)  评论(0)    收藏  举报