📅  最后修改于: 2023-12-03 15:12:41.420000             🧑  作者: Mango
这是GATE-CS-2006中的第75道题目。这个问题要求我们使用队列实现二叉树的层次遍历。因为二叉树是一个有层次结构的树形结构,因此层次遍历非常适合处理二叉树。下面我们来看一下问题的详情。
给定一颗二叉树,将元素按照层次顺序输出。一个节点的子节点从左到右依次放在队列的末端,这样就可以保证当前队列中的节点都是在同一层上的。
为了解决这个问题,我们使用一个队列来实现树的层次遍历。队列中我们开始将根节点放入队列中。对于队列中的每个节点,我们将其弹出并把它的左子节点和右子节点(如果存在)分别放入队列的末尾。我们继续这个过程直到最后一个节点被弹出。
下图展示了我们用队列实现层次遍历的过程。
下面是使用Java代码实现二叉树的层次遍历。请注意,我们使用了Java集合框架中的Queue接口和LinkedList类来实现队列。
import java.util.*;
// 二叉树节点定义
class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
public class BinaryTreeTraversal {
public List<Integer> levelOrderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
if (root == null) {
return result;
}
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
result.add(node.val);
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
return result;
}
}
本题通过一个简单的队列实现了二叉树的层次遍历。这是二叉树遍历中最常见的一种方法。
欢迎各位读者提出宝贵的意见和建议。