I have a ordered binary tree:
4
|
|-------|
2 5
|
|-------|
1 3
叶子指向空。我必须创建一个看起来像的双向链接列表
1<->2<->3<->4<->5
(显然 5 应该指向 1)
节点类如下:
class Node {
Node left;
Node right;
int value;
public Node(int value)
{
this.value = value;
left = null;
right = null;
}
}
如您所见,双向链接列表也是有序(排序)的。
问题:我必须在不使用任何额外指针的情况下从树中创建链表。left
树的指针应该是列表previous
的right
指针,树的next
指针应该是列表的指针。
我的想法是:由于树是有序树,因此中序遍历会给我一个排序列表。但是在进行中序遍历时,我无法看到将指针移动到何处以及如何移动以形成双向链表。
PS我检查了这个问题的一些变体,但没有一个给我任何线索。