我遇到了一个有趣的问题,称为大树列表问题。问题如下:
在有序二叉树中,每个节点都包含一个数据元素和指向子树的“ small ”和“ large ”指针。“small”子树中的所有节点都小于或等于父节点中的数据. “大”子树中的所有节点都大于父节点。循环双向链表由上一个和下一个指针组成。
问题是采用有序二叉树并重新排列内部指针以从中生成循环双向链表。“小”指针应该扮演“上一个”的角色,“大”指针应该扮演“下一个”的角色。该列表应排列成节点按升序排列。我必须编写一个递归函数并将头指针返回到新列表。
该操作应在 O(n) 时间内完成。
我知道递归会沿着树向下,但是如何递归地将大小子树更改为列表,我还必须将这些列表与父节点一起附加。
我应该如何解决这个问题?..我只需要一个解决问题的方向!