问答题 设排序二叉树中结点的结构为下述三个域构成:data:给出结点数据的值;left:给出本结点的左儿子结点的地址;right:给出本结点的右儿子结点的地址。设data域为正整数,该二叉树根结点地址为T。现给出一个正整数x。请编写非递归程序,实现将data域之值小于等于x的结点全部删除掉。【上海交通大学2000十一(12分)】
【正确答案】正确答案:利用二叉排序树的性质,从根结点开始查找,若根结点的值小于等于x,则根结点及其左子树均应删除,然后以右子树的根结点为树根,重新开始查找。若根结点的值大于x,则顺左子树向下查找,直到某结点的值小于等于x,则该结点及其左子树均应删除,同时将指向被删结点的指针(即双亲指向被删结点的指针)置空。删除以某结点为根的子树,采用后序遍历:删除其左子树,删除其右子树,删除根结点。
【答案解析】