问题:将搜索二叉树转换成一个排序的双向链表
要求:不能创建任何新的节点,只能调整结点的指向
- 思路
1.中序遍历(有序)
2.得增加一个前驱
#include <assert.h>
#include <stdio.h>
typedef int DataType;
typedef struct BSTreeNode {
DataType key;
struct BSTreeNode *left;
struct BSTreeNode *right;
} BSTreeNode;
//前驱
BSTreeNode* prev = NULL;
void ConnectPrevCurrent(BSTreeNode* current)
{
if(prev != NULL)
{
prev->right = current;
}
cur->left = prev;
prev = current;
}
void InOrder(BSTreeNode* root)
{
if(root == NULL)
{
return;
}
InOrder(root->left);
ConnectPrevCurrent(root);
InOrder(root->right);
}