如何将二进制搜索树转换为双向链表?

jos*_*osh 7 c++ linked-list data-structures

给定一个二叉搜索树,我需要使用C++中的结构指针将其转换为双向链表(通过以zig zag顺序遍历),如下所示,

鉴于树:

                1
                |
        +-------+---------+
        |                 |
        2                 3
        |                 |
   +----+---+        +----+---+
   |        |        |        |
   4        5        6        7
   |        |        |        |
+--+--+  +--+--+  +--+--+  +--+--+
|     |  |     |  |     |  |     |
8     9  10    11 12    13 14    15
Run Code Online (Sandbox Code Playgroud)

节点结构:

struct node
{
    char * data;
    node * left;
    node * right;
};
Run Code Online (Sandbox Code Playgroud)

创建列表(之字形顺序):

1 <-> 3 <-> 2 <-> 4 <-> 5 <-> 6 <-> 7 <-> 15 <-> ... <-> 8
Run Code Online (Sandbox Code Playgroud)

请有人帮帮我.

Edi*_*enz 4

这是一种广度优先搜索算法。维基百科对如何实现它有很好的解释。

实现算法后,创建链接列表应该是轻而易举的事(因为只需将每个访问过的元素附加到列表中即可)

  • 这并不是真正的之字形。BFS 正在以相同的方向遍历每个级别,而问题明确指出您需要以与上一个级别相反的方向遍历每个级别。 (2认同)