数据结构与算法分析生成N节点随机二叉查找树

/*生成n节点随机二叉查找树,该树具有从1到n的不同关键字*/

#include <stdio.h>

#include <stdlib.h>

typedef struct Node *Position;

typedef struct Node *Tree;

Tree makeRandomTree(int lower,int upper);

void printTree(Tree T);

int RandInt(int i,int j);

struct Node{

    int element;

    Tree Left;

    Tree Right;

};

int RandInt(int i,int j)//生成一个i到j之间的值。

{

    int temp;

    temp=i+(1.0*rand()/RAND_MAX)*(j-i);

    return temp;

}

Tree makeRandomTree(int lower,int upper)//建立一个随机树

{

    if(lower<=upper)

    {

    int num=RandInt(lower,upper);

    Tree t;

    t=(Tree)malloc(sizeof(struct Node));

    if(t==NULL)

    {    printf(“error”);

        return NULL;

    }

    t->element=num;

    t->Left=makeRandomTree(lower,num-1);

    t->Right=makeRandomTree(num+1,upper);

    return t;

    }

    return NULL;

}

void printTree(Tree T)//前序遍历打印树

{

    if(T!=NULL)

    {

        printf(“%d”,T->element);

        printTree(T->Left);

        printTree(T->Right);

    }

}

main()

{

    Tree t;

    t=makeRandomTree(1,10);

    printTree(t);

}

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/qq_28161649/article/details/78592911
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞