c – 如何将二叉搜索树转换为双向链表?

前端之家收集整理的这篇文章主要介绍了c – 如何将二叉搜索树转换为双向链表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个二叉搜索树,我需要将它转换为双链表(通过以Z字形顺序遍历),仅使用指向C中结构的指针,如下所示,

鉴于树:

1
                |
        +-------+---------+
        |                 |
        2                 3
        |                 |
   +----+---+        +----+---+
   |        |        |        |
   4        5        6        7
   |        |        |        |
+--+--+  +--+--+  +--+--+  +--+--+
|     |  |     |  |     |  |     |
8     9  10    11 12    13 14    15

节点结构:

struct node
{
    char * data;
    node * left;
    node * right;
};

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

1 <-> 3 <-> 2 <-> 4 <-> 5 <-> 6 <-> 7 <-> 15 <-> ... <-> 8

有人可以帮帮我吗.

解决方法

这是广度优先搜索算法. Wikipedia对如何实现它有很好的解释.

在实现算法之后,创建链表应该是明智的(因为它只是将每个访问过的元素附加到列表中)

猜你在找的C&C++相关文章