现在还有做系统的网站吗,千锋教育和黑马哪个好,上海网络推广专员,网络营销的技巧有哪些题目#xff1a;请用C语言写出二叉树的二叉链表结构#xff0c;并编写一个函数在二叉搜索树中可以搜索给定的关键字 难度#xff1a;★ 二叉树的二叉链表结构
#includestdio.h
#includestdlib.h
//二叉树的结点结构
typedef struct Node{int data;//存放结… 题目请用C语言写出二叉树的二叉链表结构并编写一个函数在二叉搜索树中可以搜索给定的关键字 难度★ 二叉树的二叉链表结构
#includestdio.h
#includestdlib.h
//二叉树的结点结构
typedef struct Node{int data;//存放结点数据struct Node* left;//左子树指针struct Node* right;//右子树指针
}Node;在二叉搜索树中搜索指定关键字(递归方式) 算法思路根据二叉排序树的特性左根右进行递归遍历查找 Node* searchNode(Node* root,int key){//递归出口if(rootNULL||root-datakey){retur root;//返回存储待查找关键字的节点 } else if(keyroot-data){return searchNode(root-left,key); } else {return searchNode(root-right,key); }
}
在二叉搜索树中搜索指定关键字(非递归方式)
Node* searchNode(Node* root,int key){//若树为空或者关键字等于根结点值则结束循环 while(root!NULLkey!root-data){if(keyroot-data){rootroot-left;} else{rootroot-right;}} return root;
}补充
1.二叉搜索树二叉排序树、二叉查找树、BST树的特性
二叉排序树又称为二叉查找树它是一种特殊的二叉树。 其定义为二叉树排序树或者是一棵空树或者是具有如下性质的二叉树 1若它的左子树非空则左子树上所有结点的值均小于根结点的值 2若它的右子树非空则右子树上所有结点的值均大于或大于等于根结点的值 3它的左右子树也分别为二叉排序树。 这是一个递归定义。 2.二叉搜索树的插入递归方式 算法思路 先判断树是否为空树若为空树则需要将第一个插入的结点作为根结点利用C语言中的malloc函数申请一个结点空间并初始化左右子树指针为空若不为空树则根据二叉排序树的特性左根右 进行递归地插入。注意参数列表中Node*代表数的结点指针类型root表示取出当前结点的地址。 //二叉搜索树的插入(递归方式)
void InsertNode(Node* root,int key){//原始树为空则新插入的结点作为根结点 if(rootNULL){root(Node*)malloc(sizeof(Node));root-datakey;root-leftroot-rightNULL;}else if(keyroot-data){InsertNode(root-left,key);}else {InsertNode(root-right,key);}
} 3.C语言小知识点指针类型 * 与取地址符 的用法 参考文章
C语言中 指针变量 取地址符的用法 *指针变量名的用法https://wuyujin.blog.csdn.net/article/details/128752845?spm1001.2101.3001.6650.3utm_mediumdistribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-128752845-blog-105318954.235%5Ev38%5Epc_relevant_anti_t3depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-128752845-blog-105318954.235%5Ev38%5Epc_relevant_anti_t3utm_relevant_index6