假设二叉树中每个结点值为单个字符,采用二叉链存储结构存储。设计一个算法,采用先序遍 历方法输出二叉树 bt 中所有结点的层次(编码实现)。java
时间: 2024-11-30 17:22:42 浏览: 18
首先,我们可以创建一个Node类,用于表示二叉树中的节点,包含字符值和指向左右子节点的引用。然后,我们可以设计一个辅助函数`levelOrderHelper`来进行层次遍历,并记录每一层节点的数量。
```java
class Node {
char value;
Node left, right;
public Node(char value) {
this.value = value;
this.left = null;
this.right = null;
}
}
public class BinaryTreeTraversal {
// 先序遍历,同时记录层数
public List<List<Character>> levelOrderPreorder(Node root) {
if (root == null) return new ArrayList<>();
Deque<Node> queue = new LinkedList<>();
queue.offer(root);
List<List<Character>> result = new ArrayList<>();
result.add(new ArrayList<>());
while (!queue.isEmpty()) {
int size = queue.size();
List<Character> layer = new ArrayList<>();
for (int i = 0; i < size; i++) {
Node node = queue.poll();
layer.add(node.value); // 添加当前层节点值
if (node.left != null) queue.offer(node.left);
if (node.right != null) queue.offer(node.right);
}
result.add(layer);
}
return result;
}
}
```
这个`levelOrderPreorder`方法首先将根节点入队,然后在一个循环中处理每一层。每次从队列中取出所有节点,添加到当前层,再将他们的子节点加入队列,直到队列为空。最后返回的结果列表中包含了每层的字符值。
阅读全文