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

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

说明

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

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

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

二叉树

Program to convert a given binary tree to doubly linked list

相应的双向链表

Program to convert a given binary tree to doubly linked list

算法

  1. 定义一个 Node 类来表示二叉树中的一个节点。它将具有三个属性:data、left 和 right,其中 left 和 right 分别表示节点的两个子节点。
  2. Root 将表示二叉树的根。Head 和 tail 节点分别表示双向链表的头和尾。
  3. BinaryTreeToDLL() 函数可以将给定的二叉树转换为相应的双向链表。
    1. 通过先转换左子树来执行二叉树的中序遍历。
    2. 如果列表为空,则head和tail都将指向一个节点。
    3. 如果列表不为空,则节点将被插入到列表的末尾。在这里,指针 left 和 right 将分别表示双向链表的上一个和下一个指针。
    4. 现在,递归调用 BinaryTreeToDLL() 来转换右子树。
  4. display() 将显示列表中存在的所有节点。
    1. 定义一个新节点“current”,它将指向头节点。
    2. 打印 current.data 直到 current 指向 null。
    3. 在每次迭代中,current 将指向列表中的下一个节点。

解决方案

Python

输出

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 

C

输出

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 

JAVA

输出

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 

C#

输出

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 

PHP

输出

Nodes of generated doubly linked list: 
4 2 5 1 6 3 7 
 
下一主题#