搜索树每一棵子树的左节点都比根节点小,每一个右节点都比根节点大。
根据其特性,我们可以通过中序遍历线索化的相关变形,来改变指针指向,实现变形。
void _TreeToList(Node* cur, Node*& prev)
{
if (cur == NULL)
return;
_TreeToList(cur->_left, prev);
cur->_left = prev;
if (prev)
{
prev->_right = cur;
}
prev = cur;
_TreeToList(cur->_right, prev);
}
Node* TreeToList(Node* root)
{
Node* prev = NULL;
Node*cur = NULL;
_TreeToList(cur, prev);
Node* head = root;
while (head && head->_left)
head = head->_left; //二叉树的最左节点为双向链表的头节点
return head; //返回头节点
}