數(shù)據(jù)結(jié)構(gòu)拓展習(xí)題:二叉樹刪除以根節(jié)點(diǎn)值為x的所有子樹
2022-05-27 22:15 作者:回到唐朝當(dāng)少爺 | 我要投稿
題目:設(shè)計(jì)算法,對(duì)于二叉樹T中每一個(gè)元素值為x的結(jié)點(diǎn),刪去以它為根的子樹,并釋放相應(yīng)的空間。





void Destroy(BiTree &T)
{
?????? if (T != NULL)
?????? {
????????????? Destroy(T->lchild);//銷毀左子樹
????????????? Destroy(T->rchild);//銷毀右子樹
????????????? free(T);//銷毀根結(jié)點(diǎn)
????????????? T = NULL;
?????? }
}
void FindNode(BiTree &T, TElemType x)
{
?????? if (T == NULL)
????????????? return;
?????? if (T->data == x)//如果發(fā)現(xiàn)該結(jié)點(diǎn)為所要銷毀的結(jié)點(diǎn)
?????? {
????????????? Destroy(T);//銷毀它
????????????? return;
?????? }
?????? FindNode(T->lchild, x);//看左子樹是否存在要被銷毀的結(jié)點(diǎn)
?????? FindNode(T->rchild, x);//看右子樹是否存在要被銷毀的結(jié)點(diǎn)
}