数据结构c语言版实验报告 二叉树,数据结构 二叉树的实现 c语言版

只有三个点的二叉树,完成他的查找操作和打印操作。

0818b9ca8b590ca3270a3433284dd417.png

二叉树如图所示:

下面附上二叉树的代码:

#include

struct node;

// 代表的是方块

typedef struct tree{

struct node *p_node;

}tree;

// 代表的是圆圈

typedef struct node{

int num;

tree left;

tree right;

}node;

tree *search(tree *p_rt,int num){

tree *p_tmp = NULL;

if (!(p_rt->p_node)){ // 若方块指向为空 则返回方块的地址

return p_rt;

}

if (p_rt->p_node->num == num){ // 若找到正确结果 就返回找到的值

return p_rt;

}

p_tmp = search(&(p_rt->p_node->left),num); //将左子树同样看成一棵二叉树,递归调用结果

if(p_tmp->p_node){

return p_tmp;

}

return search(&(p_rt->p_node->right),num); //将右子树看成一颗二叉树,递归调用结果 注意因为函数添加return 必有返回值

}

void output(tree *p_rt){

if (!p_rt->p_node) {

return;

}

printf("%d ",p_rt->p_node->num);

output(&(p_rt->p_node->left));

output(&(p_rt->p_node->right));

}

int main(){

node rootnd = {2},leftnd = {10},rightnd = {8};

tree rt;

rt.p_node = &rootnd; //生成二叉树

rootnd.left.p_node = &leftnd;

rootnd.right.p_node = &rightnd;

output(&rt);

printf("\n");

int tmp = 11;

tree *p_tmp = search(&rt,tmp);

if (p_tmp->p_node){

printf("%d ",p_tmp->p_node->num);

}

else {

printf("the element %d we do node find.\n",tmp);

}

return 0;

}

你可能感兴趣的:(数据结构c语言版实验报告,二叉树)