Java 树查询:递归和广度优先搜索方法
Java 树查询可以使用以下两种方法:
- 递归查询
在 Java 中,可以使用递归的方式来查询树形结构。例如,以下是一个二叉树的节点类:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
如果要查询该二叉树中是否存在值为 x 的节点,可以使用以下递归方法:
public boolean search(TreeNode root, int x) {
if (root == null) {
return false;
}
if (root.val == x) {
return true;
}
return search(root.left, x) || search(root.right, x);
}
该方法首先判断当前节点是否为空,如果为空则返回 false;如果当前节点的值等于 x,则返回 true;否则递归查询左右子树是否存在值为 x 的节点。
- 广度优先搜索
另一种查询树结构的方法是广度优先搜索。该方法使用一个队列来保存要访问的节点,并按照层次顺序遍历树。例如,以下代码展示了如何使用广度优先搜索查询一棵二叉树:
public boolean search(TreeNode root, int x) {
if (root == null) {
return false;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
if (node.val == x) {
return true;
}
if (node.left != null) {
queue.offer(node.left);
}
if (node.right != null) {
queue.offer(node.right);
}
}
return false;
}
该方法首先将根节点加入队列,并在循环中不断取出队列中的节点进行处理。如果当前节点的值等于 x,则返回 true;否则将当前节点的左右子节点加入队列继续搜索。如果队列为空仍未找到值为 x 的节点,则返回 false。
综上所述,Java 树查询可以使用递归或广度优先搜索等方法实现。具体方法选择应根据场景和需求而定。
原文地址: https://www.cveoy.top/t/topic/mskO 著作权归作者所有。请勿转载和采集!