Java 将给定的二叉树转换为双向链表的程序

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

在此程序中,我们需要将给定的二叉树转换为相应的双向链表。

二叉树是一种树状数据结构,其中每个节点最多有两个子节点。

这可以通过以中序遍历的方式进行,即左子节点 -> 根 -> 右子节点 来实现。遍历左子树,通过将节点添加到列表末尾将其转换为双向链表。这样,最左边的节点将成为列表的头。然后,将右子树转换为双向链表。

Java program to convert a given binary tree to doubly linked list
Java program to convert a given binary tree to doubly linked list

算法

  • 定义一个 Node 类来表示二叉树中的一个节点。它将具有三个属性:data、left 和 right,其中 left 和 right 分别表示节点的两个子节点。
  • Root 将表示二叉树的根。Head 和 tail 节点分别表示双向链表的头和尾。
  • BinaryTreeToDLL() 将把给定的二叉树转换为相应的双向链表。
    • 通过先转换左子树来执行二叉树的中序遍历。
    • 如果列表为空,则head和tail都将指向一个节点。
    • 如果列表不为空,则节点将被插入到列表的末尾。在这里,指针 left 和 right 将分别表示双向链表的上一个和下一个指针。
    • 现在,递归调用 BinaryTreeToDLL() 来转换右子树。

a. display() 将显示列表中存在的所有节点。

  • 定义一个新节点“current”,它将指向头节点。
  • 打印 current.data 直到 current 指向 null。
  • 在每次迭代中,current 将指向列表中的下一个节点。

程序

输出

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 
下一个主题Java 程序