删除二叉排序树里小于等于x的节点
void DeleteAllx(BSTree T,int x)
//在二叉排序树T中,删除所有小于等于x的结点
{BSTree p=T,q;
while(T &&T->data≤x) //根结点的值小于等于x
{p=T;T=T->right;p->right=null;
DelTree(p);} //删除二叉树p,删除持续到“根”结点值大于x或T为空树为止
if (T)
{q=T;p=T->left;
while(p && p->data>x) //沿根结点左分枝向下,查小于等于x的结点
{while(p && p->data>x) { q=p;p=p->left;} // q记p的双亲
if(p) //p结点的值小于等于x
{q->left=p->right;p->right=null;DelTree(p); }
p=q->left;// 再查原p的右子树中小于等于x的结点
}}
}// DeleteAllx
第一个while里我觉得应该是p!=null,但是答案写的是p && p->data>x,求解
void DeleteAllx(BSTree T,int x)
//在二叉排序树T中,删除所有小于等于x的结点
{BSTree p=T,q;
while(T &&T->data≤x) //根结点的值小于等于x
{p=T;T=T->right;p->right=null;
DelTree(p);} //删除二叉树p,删除持续到“根”结点值大于x或T为空树为止
if (T)
{q=T;p=T->left;
while(p && p->data>x) //沿根结点左分枝向下,查小于等于x的结点
{while(p && p->data>x) { q=p;p=p->left;} // q记p的双亲
if(p) //p结点的值小于等于x
{q->left=p->right;p->right=null;DelTree(p); }
p=q->left;// 再查原p的右子树中小于等于x的结点
}}
}// DeleteAllx
第一个while里我觉得应该是p!=null,但是答案写的是p && p->data>x,求解