Java 搜索二叉树中节点的程序

2025年3月17日 | 阅读 3 分钟

树是非线性数据结构,以分层方式存储数据。树是称为节点的元素的集合。节点通过边连接并包含数据。树的第一个节点称为根。每个节点可以有或没有子节点。没有子节点的节点称为叶子节点。

二叉树是另一种类型的树数据结构,其中每个节点最多可以有两个子节点。也就是说,二叉树中的每个节点将具有数据、左子节点和右子节点。

Java program to search a node in a Binary Tree

上图表示一个二叉树,其中 1 代表树的根节点。节点 2 的左子节点是 4,节点 3 的左子节点是 5,右子节点是 6。节点 4、5 和 6 是叶子节点,因为它们没有子节点。

说明

在这个程序中,我们将搜索二叉树中特定值。如果存在,则打印消息“元素存在于二叉树中”,否则打印消息“元素不存在于二叉树中”。简而言之,我们将首先将根节点的数据与要搜索的节点的数据进行比较。如果找到匹配项,则将标志设置为 true。否则,先在左子树中搜索节点,然后在右子树中搜索。

算法

  • 定义 Node 类,该类包含三个属性:data、left 和 right。这里,left 表示节点的左子节点,right 表示节点的右子节点。
  • 创建节点时,数据将传递到节点的 data 属性,left 和 right 都将设置为 null。
  • 定义另一个类,该类有两个属性 root 和 flag。
    • Root 表示树的根节点,并将其初始化为 null。
    • Flag 将用于检查给定节点是否在树中。最初,它将设置为 false。

a. searchNode() 将搜索二叉树中的特定节点

  • 它检查 root 是否为 null,这意味着树是空的。
  • 如果树不为空,它将比较 temp 的数据与 value。如果它们相等,它将把标志设置为 true 并返回。
  • 通过递归调用 searchNode() 来遍历左子树,并检查 value 是否存在于左子树中。
  • 通过递归调用 searchNode() 来遍历右子树,并检查 value 是否存在于右子树中。

程序

输出

Element is present in the binary tree.
下一个主题Java 程序