typedef struct binary_node {
node_t* left;
node_t* right;
int value;
} node_t;
int binary_tree_to_list(node_t* pRoot) {
if (pRoot == nullptr) {
return 0;
}
node_t* pListLastNode = nullptr;
binary_tree_to_list_part(pRoot, &pListLastNode);
while (pListLastNode->right != nullptr) {
pListLastNode = pListLastNode->right;
}
return pListLastNode;
}
// 该函数功能是将一颗二叉树转换为双链表,并将其与pListLastNode链接在一起
void binary_tree_to_list_part(node_t* pRoot, node_t** pListLastNode) {
if (pRoot == nullptr) {
return;
}
if (pRoot->left != nullptr) {
binary_tree_to_list_part(pRoot->left, pListLastNode);
}
node_t* pCurrent = pRoot;
pCurrent->left = *pListLastNode;
if (*pListLastNode != nullptr) {
(*pListLastNode)->right = pCurrent;
}
*pListLastNode = pCurrent;
if (pRoot->right != nullptr) {
binary_tree_to_list_part(pRoot->right, pListLastNode);
}
return;
}
将一个搜索二叉树转为升序的双链表
最新推荐文章于 2024-08-02 16:20:32 发布