搜索二叉树转双链表

问题:将搜索二叉树转换成一个排序的双向链表

要求:不能创建任何新的节点,只能调整结点的指向

 

  • 思路

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);
}

猜你喜欢

转载自blog.csdn.net/qq_40355351/article/details/82263210