问:程序:将三叉树转换为双向链表。

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

说明

在此程序中,给定的三叉树将被转换为相应的双向链表。

三叉树是一种分层数据结构,其中每个节点最多可以有三个子节点。这可以通过前序遍历三叉树来实现,即根 -> 左子节点 -> 中间子节点 -> 右子节点。首先,遍历根节点并将其添加到列表中。然后,分别添加其左、中、右子树。

三叉树

Program to create a doubly linked list from a Ternary Tree

相应的双向链表

Program to create a doubly linked list from a Ternary Tree

算法

  1. 定义一个Node类,表示三叉树中的一个节点。它将具有四个属性:data、left、middle、right,其中left、middle和right表示节点的三个子节点。
  2. Root表示三叉树的根。Head和tail节点表示双向链表的头和尾。
  3. convertTernaryToDLL() 函数将给定的三叉树转换为相应的双向链表。
    1. left、middle 和 right 节点代表给定节点的子节点。
    2. 如果节点不为null,则将该节点插入列表中。
    3. 如果列表为空,则head和tail都将指向一个节点。
    4. 如果列表不为空,则将在列表末尾插入节点。这里,left和right指针将分别表示双向链表的previous和next指针。middle将不指向任何东西,因此只需将其设置为null。
    5. 当一个节点成功添加到列表中时,将递归调用convertTernaryToDLL()将给定节点的left、middle和right子节点添加到列表中。
  4. displayDLL() 函数将显示列表中存在的所有节点。
    1. 定义一个新节点“current”,它将指向头节点。
    2. 打印 current.data 直到 current 指向 null。
    3. 在每次迭代中,current 将指向列表中的下一个节点。

解决方案

Python

输出

Nodes of the generated doubly linked list: 

5 10 20 40 50 12 24 36 48 15 30 45 60 

C

输出

Nodes of generated doubly linked list: 
5 10 20 40 50 12 24 36 48 15 30 45 60 

JAVA

输出

Nodes of generated doubly linked list: 
5 10 20 40 50 12 24 36 48 15 30 45 60 

C#

输出

Nodes of generated doubly linked list: 
5 10 20 40 50 12 24 36 48 15 30 45 60 

PHP

输出

Nodes of generated doubly linked list: 
5 10 20 40 50 12 24 36 48 15 30 45 60 
 
下一主题#