欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在BST(二叉搜索树)中查找介于给定范围之内的值

程序员文章站 2022-05-18 17:15:02
...

一、题目要求

编写一个递归函数printRange(),传入一个BST、一个较小的值和一个较大的值,按照顺序打印出介于两个值之间的所有结点。函数printRange()应尽可能少地访问BST的结点。(C++实现)

二、题解

代码如下:

void PrintRange(BinarySearchTree* bst,int minData,int maxData) {
        //中序 保证按大小顺序打印范围内的数
        while (bst->root) {
            BinaryTreeNode *pointer = bst->root;

            //向左子树查找,直到某棵左子树的根的值不大于给定的最小值
            if (pointer->value>minData){
                bst->root=pointer->lChild;
                PrintRange(bst,minData,maxData);
            }

            //如果值在范围内则打印输出
            if (pointer->value > minData && pointer->value < maxData)
                cout << pointer->value << " ";

            //向右子树查找,直到某棵右子树的根的值不小于给定的最大值
            if (pointer->value<maxData){
                bst->root=pointer->rChild;
                PrintRange(bst,minData,maxData);
            }

        }
    }