Java 中树的查询可以使用深度优先搜索 (DFS) 或广度优先搜索 (BFS) 算法来实现。

  1. 深度优先搜索算法

深度优先搜索算法可以使用递归或栈来实现。递归实现时,先访问根节点,然后递归访问左子树和右子树。栈实现时,先将根节点入栈,然后循环弹出栈顶节点并访问,将其右子树和左子树分别入栈(注意先右后左)。

示例代码:

递归实现:

public void dfs(TreeNode root) {
    if (root == null) {
        return;
    }
    // 访问根节点
    System.out.print(root.val + ' ');
    // 递归访问左子树
    dfs(root.left);
    // 递归访问右子树
    dfs(root.right);
}

栈实现:

public void dfs(TreeNode root) {
    if (root == null) {
        return;
    }
    Stack<TreeNode> stack = new Stack<>();
    stack.push(root);
    while (!stack.isEmpty()) {
        TreeNode node = stack.pop();
        // 访问节点
        System.out.print(node.val + ' ');
        // 将右子树和左子树入栈
        if (node.right != null) {
            stack.push(node.right);
        }
        if (node.left != null) {
            stack.push(node.left);
        }
    }
}
  1. 广度优先搜索算法

广度优先搜索算法需要使用队列来实现。先将根节点入队,然后循环弹出队头节点并访问,将其左子树和右子树分别入队。

示例代码:

public void bfs(TreeNode root) {
    if (root == null) {
        return;
    }
    Queue<TreeNode> queue = new LinkedList<>();
    queue.offer(root);
    while (!queue.isEmpty()) {
        TreeNode node = queue.poll();
        // 访问节点
        System.out.print(node.val + ' ');
        // 将左子树和右子树入队
        if (node.left != null) {
            queue.offer(node.left);
        }
        if (node.right != null) {
            queue.offer(node.right);
        }
    }
}

以上是 Java 中树的查询的基本方法,具体实现根据具体情况进行调整和优化。

Java 树查询:深度优先搜索 (DFS) 和广度优先搜索 (BFS) 实现

原文地址: https://www.cveoy.top/t/topic/mskK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录