给定一个二叉搜索树,我需要将它转换为双链表(通过以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对如何实现它有很好的解释.
在实现算法之后,创建链表应该是明智的(因为它只是将每个访问过的元素附加到列表中)