给定二叉树(Bt),将其转换为双链接列表(DLL)。节点中的左右指针分别用作转换后的DLL中的前一个和下一个指针。
我想将树更改为双链接列表,而不更改树
我写的代码。但它并没有预先订购(......)。
我怎么能转换它们?
我也尝试用" qunqe" (?);并没有成功,所以我搬到了#34; req" (?)。
我希望你能帮助我。
谢谢。
node* bintree2list(node *roott)
{
//don't have tree
if (roott == NULL)
return roott;
// Convert
roott = bintree2listUtil(roott);
while (roott->left != NULL) // go to the begining to root
roott = roott->left;
return (roott);
}
node* bintree2listUtil(node* root)
{
if (root == NULL)
return root;
if (root->left != NULL)
{
node*left = bintree2listUtil(root->left);
for (; left->right != NULL; left = left->right);
left->right = root;
root->left = left;
}
if (root->right != NULL)
{
node* right = bintree2listUtil(root->right);
for (; right->left != NULL; right = right->left);
root->right = right;
right->left = root;
}
return root;
}