📜  在二叉树中搜索节点(1)

📅  最后修改于: 2023-12-03 15:23:28.965000             🧑  作者: Mango

在二叉树中搜索节点

二叉树搜索是计算机科学中一种基本算法,用于在二叉树中查找特定节点。在二叉树搜索中,从根节点开始,在左子树和右子树之间进行选择,直到找到所需的节点为止。

实现

在二叉树中搜索节点通常使用递归函数进行实现。如果当前节点为空,则返回null,表示未找到节点。否则,检查当前节点是否是所需的节点。如果是,返回当前节点。否则,递归调用左子树和右子树,并在子树中查找所需的节点。

以下是一个二叉树搜索的示例实现:

public class BinarySearchTree {
  private Node root;

  private Node search(Node node, int key) {
    if (node == null || node.key == key) {
      return node;
    }

    if (key < node.key) {
      return search(node.left, key);
    } else {
      return search(node.right, key);
    }
  }

  public Node search(int key) {
    return search(root, key);
  }

  // ... other methods ...
}

class Node {
  int key;
  Node left;
  Node right;

  public Node(int key) {
    this.key = key;
  }
}

在以上示例中,BinarySearchTree类定义了一个私有递归函数search,该函数接受一个节点和一个key值作为参数,返回搜索结果。如果节点为空或key值与节点的key值相同,返回当前节点。否则,递归调用左子树或右子树。

BinarySearchTree类的search方法是一个公共接口,它使用根节点进行搜索。

时间复杂度

在最坏的情况下,二叉树搜索需要搜索所有节点,时间复杂度为O(n),其中n是节点数。在平均情况下,时间复杂度为O(log n),其中n是节点数。