三星机试 一些需要会的数据结构

struct TreeNode{

    int val;

    struct TreeNode * left;

    struct TreeNode * right;

    }

struct TreeNode *createNode(int val){

    struct TreeNode * node=(struct TreeNode*)malloc(sizeof(struct TreeNode));

    node->val=val;

    node->left=node->right=NULL;

    return node;

}

struct TreeNode* buildTree(int v,int edges[][2],int v){

    struct TreeNode** nodes=(struct TreeNode**)malloc((v+1)sizeof(struct TreeNode**));

    for(int i=1;i<=v;i++){

        node[i]=createNode(i);

    }

    for(int i=0;i

        int parent=edges[i][0];

        int child=edges[i][1];

        if(node[parent]->left=NULL){

        node[parent]->left=node[child];

        }else{

        node[parent]->right=node[child];

        }

    }

    struct TreeNode* root=node[1];

    free(nodes);

    return root;

}

队列

// 定义队列结构
typedef struct {
    int data[MAX_V];
    int front, rear;
} Queue;

// 初始化队列
void initQueue(Queue* q) {
    q->front = q->rear = 0;
}

// 入队
void enqueue(Queue* q, int value) {
    q->data[q->rear++] = value;
}

// 出队
int dequeue(Queue* q) {
    return q->data[q->front++];
}

// 判断队列是否为空
int isEmpty(Queue* q) {
    return q->front == q->rear;
}

你可能感兴趣的:(数据结构,算法)