输入一颗二叉搜索树,将该二叉树转换成一个排序的双向链表。
要求不能创建任何新的结点,只能调整树中节点指针的指向。
例如,输入以下的二叉搜索树,要求转换成的为双向链表。
由于要求转换好的链表是排好序的,于是我们使用中序的遍历
刚好就是按照从小到大的顺序的。
代码实现:
#include<iostream>
using namespace std;
struct Node
{
int _value;
Node* _left;
Node* _right;
};
void Convert(Node* root, Node*& prevNode)
{
if (root == NULL)
{
return;
}
Convert(root->_left, prevNode);
root->_left = prevNode;
if (prevNode)
{
prevNode->_right = root;
}
prevNode = root;
Convert(root->_right, prevNode);
}