【正确答案】本题的算法思想是:先判定T的根结点是否是要找的结点,若是,则直接拆开;否则判定在其左子树中进行拆开。若在左子树中未找到,则在右子树中查找。
实现本题功能的程序代码如下:
BTNode *dislink(BTNode * &t,elemtype x)
//t:原二叉树,拆开后的第一棵二叉树;分拆成功后返回第二棵二叉树
{
BTNode *p,*find;
if(t!=NULL)
{
if(t→data==x) //根结点数据域为x
{
p=t;
t=NULL;
return(p);
}
else
{
find=dislink(t→left,x); //在左子树中查找并分解
if(!find)
//若左子树中未找到,则在右子树中查找并分解
find=dislink(t→right,x);
return(find);
}
}
else return(NULL);
}
【答案解析】