将二叉搜索树转换为已排序的双向链接列表
https://www.lintcode.com/problem/1534/?utm_source=sc-cheatsheet-cyc
Last updated
https://www.lintcode.com/problem/1534/?utm_source=sc-cheatsheet-cyc
Last updated
描述
将BST转换为已排序的循环双向链表。可以将左右指针视为双向链表中上一个和下一个指针的同义词。
我们以下面的BST为例,它可以帮助您更好地理解问题:
我们希望将此BST转换为循环双向链表。双向链表中的每个节点都有一个前任和后继。对于循环双向链表,第一个元素的前导是最后一个元素,最后一个元素的后继是第一个元素。
下图显示了上述BST的循环双向链表。“head”符号表示它指向的节点是链表的最小元素。
具体来说,我们希望进行转型。转换后,树节点的左指针应指向其前一个指针,右指针应指向其后继指针。我们应该将指针返回到链表的第一个元素。
下图显示了转换后的BST。实线表示后继关系,而虚线表示前趋关系。
样例
样例 1:
样例 2:
解题思路:
构建二叉树:根据输入的数组构建对应的二叉搜索树。
左子树逆序输出:对二叉树的左子树进行后序遍历,并将结果逆序输出。
右子树正序输出:对二叉树的右子树进行前序遍历,并将结果正序输出。