コード例 #1
0
ファイル: BinarySearchTree.cpp プロジェクト: Prithula/Test
int rangeSearch(struct treeNode * node, int leftBound, int rightBound) //returns number of items in the
{
    //write your codes here
    //int n=0;
    int l,r;
    if(node==0)return 0;
    if(node->item>=leftBound && node->item<=rightBound)
    {
        //n++;
        l=rangeSearch(node->left,leftBound,node->item);
        r=rangeSearch(node->right,node->item,rightBound);
        return l+r+1;
    }
    else if(node->item>rightBound)
    {
        l=rangeSearch(node->left,leftBound,rightBound);
        return l;
    }
    else if(node->item<leftBound)
    {
        r=rangeSearch(node->right,leftBound,rightBound);
        return r;
    }

}
コード例 #2
0
void GLWidget::rangeSearch(TwoDTree::Node *p, RangeQuery &rq, std::vector<QPointF> &includingPoints)
{
    if (p != nullptr) {
        double l;
        double r;
        double coord;

        if (p->isVertical) {
            l = qMin(rq.p2.y(), rq.p1.y());
            r = qMax(rq.p2.y(), rq.p1.y());
            coord = p->value.y();
        } else {
            l = qMin(rq.p2.x(), rq.p1.x());
            r = qMax(rq.p2.x(), rq.p1.x());
            coord = p->value.x();
        }

        if (p->value.y() <= getHighest(rq) && p->value.y() >= getLowest(rq) &&
            p->value.x() >= getLeftMost(rq) && p->value.x() <= getRightMost(rq)) {
            includingPoints.push_back(p->value);
        }
        if (l < coord) {
            rangeSearch(p->left, rq, includingPoints);
        }
        if (r > coord) {
            rangeSearch(p->right, rq, includingPoints);
        }
    }
}
コード例 #3
0
int rangeSearch(struct treeNode * node, int leftBound, int rightBound) //returns number of items in the
{
    //write your codes here
    if(node == 0) return 0;
    if(node->item < leftBound) return rangeSearch(node->right, leftBound, rightBound);  // node item is less than range, left subtree will also be less
    if(node->item > rightBound) return rangeSearch(node->left, leftBound, rightBound);  // node item is greater than range, so will be right tree
    else return 1 + rangeSearch(node->left, leftBound, rightBound) + rangeSearch(node->right, leftBound, rightBound);   // search both + itself
}
コード例 #4
0
int rangeSearch(struct treeNode * node, int leftBound, int rightBound)
{
    if (node==0) return 0;
    if (node->item>=leftBound && node->item<=rightBound)
        return (1+rangeSearch(node->left,leftBound,rightBound)+rangeSearch(node->right,leftBound,rightBound));
    if (node->item<leftBound) return rangeSearch(node->right,leftBound,rightBound);
    if (node->item>rightBound) return rangeSearch(node->left,leftBound,rightBound);

}
コード例 #5
0
int main(void)
{
    initializeTree();
    while(1)
    {
        printf("1. Insert item. 2. Delete item. 3. Search item. \n");
        printf("4. Print height of tree. 5. Print height of an item. \n");
        printf("6. PrintInOrder. 7. Range Search.\n");

        int ch;
        scanf("%d",&ch);
        if(ch==1)
        {
            int item;
            scanf("%d", &item);
            insertItem(root, item);
        }
        else if(ch==2)
        {
            int item;
            scanf("%d", &item);
            deleteItem(root, item);
        }
        else if(ch==3)
        {
            int item;
            scanf("%d", &item);
            struct treeNode * res = searchItem(root, item);
            if(res!=0) printf("Found.\n");
            else printf("Not found.\n");
        }
        else if(ch==4)
        {
            int height = calcNodeHeight(root);
            printf("Height of tree = %d\n", height);
        }
        else if(ch==5)
        {
            int item;
            scanf("%d", &item);
            int height = calcHeight(item);
            printf("Height of %d = %d\n", item, height);
        }
        else if(ch==6)
        {
            int h = calcNodeHeight(root);
            printf("\n--------------------------------\n");
            printInOrder(root, h);
            printf("--------------------------------\n");
        }
        else if(ch==7)
        {
            int l,r;
            scanf("%d%d",&l,&r);
            printf("%d\n",rangeSearch(root,l,r));
        }
    }

}
コード例 #6
0
ファイル: regex.cpp プロジェクト: UIKit0/qgrep
	virtual RegexMatch search(const char* data, size_t size)
	{
		const char* range = rangePrepare(data, size);
		RegexMatch result = rangeSearch(range, size);
		rangeFinalize(range);

		return result ? RegexMatch(result.data - range + data, result.size) : RegexMatch();
	}
コード例 #7
0
void GLWidget::drawPointsInRange()
{
    //RangeQuery rq(QPointF(0.25, 0.75), QPointF(0.75, -0.75));

    std::vector<QPointF> includingPoints;
    rangeSearch(twoDTree.root, rq, includingPoints);

    // Draw points
    glBegin( GL_POINTS );
    glColor4f( 0.00f, 0.9, 0.0f, 1.0f );

    for (auto &point : includingPoints) {
        glVertex2f( point.x(), point.y() );
    }
    glEnd();
}
コード例 #8
0
int rangeSearch(struct treeNode * node, int leftBound, int rightBound) //returns number of items in the
{
    //write your codes here
    if(node!=0)
    {


        if((node->item>=leftBound)&&(node->item<=rightBound))
        {
            return (1+rangeSearch(node->left,leftBound,rightBound)+rangeSearch(node->right,leftBound,rightBound));
        }
        else if((node->item<=leftBound))
        {
            if(node->item==leftBound)
            {
                return (1+rangeSearch(node->right,leftBound,rightBound));
            }
            else
            {
                return (rangeSearch(node->right,leftBound,rightBound));
            }
        }
        else if((node->item>=rightBound))
        {
            if(node->item==rightBound)
            {
                return (1+rangeSearch(node->left,leftBound,rightBound));
            }
            else
            {
                return (rangeSearch(node->left,leftBound,rightBound));
            }

        }

    }
    else
    {
        return 0;
    }
}
コード例 #9
0
int main(void)
{
    initializeTree();
    while(1)
    {
        printf("\n1. Insert item. 2. Delete item. 3. Search item. \n");
        printf("4. Print height of tree. 5. Print height of an item. \n");
        printf("6. PrintInOrder. 7. Calculate Depth 8. get MinItem. 9. get MaxItem.\n10. Range search. 11. Delete. 12. exit.\n");

        int ch;
        scanf("%d",&ch);
        if(ch==1)
        {
            int item;
            scanf("%d", &item);
            insertItem(root, item);
        }
        else if(ch==2)
        {
            int item;
            scanf("%d", &item);
            deleteItem(root, item);
        }
        else if(ch==3)
        {
            int item;
            scanf("%d", &item);
            struct treeNode * res = searchItem(root, item);
            if(res!=0) printf("Found.\n");
            else printf("Not found.\n");
        }
        else if(ch==4)
        {
            int height = calcNodeHeight(root);
            printf("Height of tree = %d\n", height);
        }
        else if(ch==5)
        {
            int item;
            scanf("%d", &item);
            int height = calcHeight(item);
            printf("Height of %d = %d\n", item, height);
        }
        else if(ch==6)
        {
            int h = calcNodeHeight(root);
            printf("\n--------------------------------\n");
            printInOrder(root, h);
            printf("--------------------------------\n");
        }
        else if(ch==12)
        {
            break;
        }
        else if(ch==7)
        {
            int i;
            scanf("%d",&i);
            printf("depth %d\n",calcDepth(i));
        }


        else if(ch==8)
        {
            printf("min item %d\n",getMinItem());
        }
        else if(ch==9)
        {
            printf("max item %d\n",getMaxItem());
        }
        else if(ch==10)
        {
            int item1,item2;
            scanf("%d%d", &item1,&item2);
            printf("Item number %d",rangeSearch(root,item1,item2));

        }
        else if(ch==11)
        {
            int a;
            scanf("%d",&a);
            deleteItem(root,a);
        }
    }

}
コード例 #10
0
int main(void)
{
    //freopen("in2.txt", "r", stdin);
    initializeTree();
    while(1)
    {
        //printMenu();
        int ch;
        scanf("%d",&ch);
        if(ch == 1)
        {
            int item;
            scanf("%d", &item);
            insertItem(root, item);
        }
        else if(ch == 2)
        {
            int item;
            scanf("%d", &item);
            deleteItem(root, item);
        }
        else if(ch == 3)
        {
            int item;
            scanf("%d", &item);
            struct treeNode * res = searchItem(root, item);
            if(res!=0) printf("Found.\n");
            else printf("Not found.\n");
        }
        else if(ch == 4)
        {
            int height = calcNodeHeight(root);
            printf("Height of tree = %d\n", height);
        }
        else if(ch == 5)
        {
            int item;
            scanf("%d", &item);
            int height = calcHeight(item);
            printf("Height of %d = %d\n", item, height);
        }
        else if(ch == 6)
        {
            int h = calcNodeHeight(root);
            printf("\n--------------------------------\n");
            printInOrder(root, h);
            printf("--------------------------------\n");
        }
        else if(ch == 7)
        {
            printf("%d\n", getSize(root));
        }
        else if(ch == 8)
        {
            int item;
            scanf("%d", &item);
            printf("%d\n", calcDepth(item));
        }
        else if(ch == 9)
        {
            printf("%d\n", calcNodeDepth(root));
        }
        else if(ch == 10)
        {
            if(root == 0) {
                printf("tree is empty\n");
                continue;
            }
            printf("%d\n", getMinItem());
        }
        else if(ch == 11)
        {
            if(root == 0) {
                printf("tree is empty\n");
                continue;
            }
            printf("%d\n", getMaxItem());
        }
        else if(ch == 12)
        {
            int left, right;
            scanf("%d %d", &left, &right);
            printf("%d\n", rangeSearch(root, left, right));
        }
        else if(ch == 13)
        {
            int item;
            scanf("%d", &item);
            //printf("Del : %d\n", item);
            //deleteItem(root, item);
            printf("%d\n", deleteItem(root, item));
        }
        else if(ch == 14)
        {
            break;
        }
    }

}