假设二叉树中每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法,采用先序遍 历方法输出二叉树 bt 中所有结点的层次(编码实现)。java递归
时间: 2024-11-30 18:22:47 浏览: 17
假设你有一个二叉树的节点类(Node),它包含字符值(char value)和指向左右子节点的引用(Node left 和 Node right)。我们可以使用队列(Queue)数据结构和递归来实现这个层次遍历算法。这里是一个简单的Java实现:
```java
import java.util.LinkedList;
import java.util.Queue;
class Node {
char value;
Node left, right;
// Constructor and getters/setters...
}
public class BinaryTreeTraversal {
public static void levelOrderPrint(Node node) {
if (node == null) return;
Queue<Node> queue = new LinkedList<>();
queue.offer(node);
while (!queue.isEmpty()) {
int currentLevelSize = queue.size();
for (int i = 0; i < currentLevelSize; i++) {
Node currentNode = queue.poll();
System.out.print(currentNode.value + " "); // 输出当前节点值
// 如果有右孩子,加入队列
if (currentNode.right != null) queue.offer(currentNode.right);
// 如果有左孩子,也加入队列,因为我们要按照先序遍历顺序,即先左后右
if (currentNode.left != null) queue.offer(currentNode.left);
}
System.out.println(); // 换行表示新的层次开始
}
}
public static void main(String[] args) {
// 创建并初始化二叉树
Node root = ...;
// 调用函数打印层次遍历结果
levelOrderPrint(root);
}
}
```
在这个代码中,我们首先将根节点放入队列,然后在一个循环里处理每一层节点。每次从队列中取出节点并访问其值,同时将其左右子节点分别添加到队列,以便下一层遍历。
阅读全文