【发布时间】:2011-04-14 03:42:25
【问题描述】:
给定一个二叉搜索树,我需要将其转换为双向链表(通过以之字形顺序遍历),仅使用指向 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
谁能帮帮我。
【问题讨论】:
-
列表中节点的顺序重要吗?
-
“创建列表”部分是否应该是答案?我不知道他们将如何获得或想要该列表。如果结果是一个列表(1 2 3 4 ... 15),则更有意义。还是只是一个关卡遍历,每个关卡都从另一端开始?
-
@Nick:是的,我知道如何创建排序列表。但是这里我需要按照这个特定的顺序创建。
-
这似乎是一个曲折的顺序。您应该在问题中提及这一点。
-
你可以在实现 BFS 时使用堆栈和队列。我认为这应该可行。
标签: c++ data-structures linked-list