二叉树实战(三) - 二叉树层序遍历方式(广度优先遍历)
在 实战 - 二叉树的遍历方式 里面我们实践了遍历的方式,主要包括 前序遍历、中序遍历、后续遍历。这三种方式都属于深度优先遍历方式。
今天我们实战一下广度优先遍历的方式 - 层序遍历。
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; }

浙公网安备 33010602011771号