当前位置: 首页 > news >正文

做ppt很有创意的网站wordpress 谷歌插件

做ppt很有创意的网站,wordpress 谷歌插件,怎么做物物交换网站,企业销售管理系统软件二叉搜索树#xff1a; 树不是线性的#xff0c;是层级结构。基本单位是节点#xff0c;每个节点最多2个子节点。有序。每个节点#xff0c;其左子节点都比它小#xff0c;其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。…二叉搜索树 树不是线性的是层级结构。基本单位是节点每个节点最多2个子节点。有序。每个节点其左子节点都比它小其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。 添加元素从根节点开始比对数值。若比它小往左子树比对若比它大往右子树比对直到找到为空则为新元素的位置。 删除元素 若删除的节点为叶子节点即无子节点则直接删除。若删除的节点只有左子节点则左子节点替代删除节点。若删除的节点只有右子节点则右子节点替代删除节点。若删除的节点既有左子节点又有右子节点则找到直接前驱即删除节点的左子树中的最大值即删除节点的左子节点的最右节点直接前驱的值替代删除节点的值删除直接前驱节点。 遍历元素可使用递归 前序遍历顺序根节点、左子节点、右子节点。中序遍历顺序左子节点、根节点、右子节点。后序遍历顺序左子节点、右子节点、根节点。 查找元素从根节点开始比对数值。若比它小往左子树查找若比它大往右子树查找直到找到该元素则返回1true若没有则返回0false。 C语言实现使用链表实现 创建结构体数据类型记录二叉搜索树的根节点和数据个数 typedef struct Link {LinkNode *root; // 根节点int length; // 统计有多少数据 } LinkBST; // 别名 创建二叉搜索树并初始化 LinkBST bst; bst.root NULL; // 根节点初始化为NULL bst.length 0; // 数据个数初始化为0 创建节点结构体数据类型并创建具体节点实例的函数 // 节点结构体数据类型 typedef struct Node {int value; // 数据类型为整型struct Node *left; // 左子节点struct Node *right; // 右子节点 }LinkNode; // 别名 // 函数创建节点 LinkNode *createNode(int data) {LinkNode *node (LinkNode *)malloc(sizeof(LinkNode)); // 分配节点内存空间if(node NULL){perror(Memory allocation failed);exit(-1);}node-value data; // 数据node-left NULL; // 左子节点初始化为NULLnode-right NULL; // 右子节点初始化为NULLreturn node; } 添加元素 void add(LinkBST *bst, int data) // add element {// 函数往二叉搜索树中添加元素 LinkNode *addNode(LinkNode *node, int data){if(node NULL){LinkNode *newnode createNode(data);node newnode;bst-length; // 每添加一个元素length1return node;}if(data node-value) node-left addNode(node-left, data);else if(data node-value) node-right addNode(node-right, data);return node;}// 从根节点开始比对root指针始终指向二叉搜索树的根节点bst-root addNode(bst-root, data); } 删除元素 void delete(LinkBST *bst, int data) // delete element {// 函数删除节点 LinkNode *del(LinkNode *node){ // 若只有右子节点则右子节点替代删除节点if(node-left NULL){bst-length--; // 每删除一个元素length-1return node-right;}// 若只有左子节点则左子节点替代删除节点else if(node-right NULL){bst-length--; // 每删除一个元素length-1return node-left;}// 左右子节点都有则直接前驱(左子节点的最右节点)替代删除节点并删除直接前驱else if(node-left node-right){LinkNode *tmp node, *cur node-left;while(cur-right){tmp cur;cur cur-right;}node-value cur-value;if(tmp ! node) tmp-right cur-left;else tmp-left cur-left;bst-length--; // 每删除一个元素length-1return node;}}// 函数找到将要删除的节点LinkNode *delNode(LinkNode *node, int data){if(node NULL) return node;if(data node-value) node del(node);else if(data node-value) node-left delNode(node-left, data);else if(data node-value) node-right delNode(node-right, data);return node;} // 从根节点开始比对。root指针始终指向二叉搜索树的根节点bst-root delNode(bst-root, data); } 遍历元素使用递归 // 前序遍历根左右 void pretravel(LinkNode *node) {if(node NULL) return ;printf(%d , node-value);pretravel(node-left);pretravel(node-right); } // 中序遍历左根右 void midtravel(LinkNode *node) {if(node NULL) return ;midtravel(node-left);printf(%d , node-value);midtravel(node-right); } // 后序遍历左右根 void posttravel(LinkNode *node) {if(node NULL) return ;posttravel(node-left);posttravel(node-right);printf(%d , node-value); } 查找元素 找到元素返回1(true)没找到返回0(false)。 int find(LinkNode *node, int data) {if(node NULL) return 0;if(data node-value) return 1;if(data node-value) find(node-left, data);else if(data node-value) find(node-right, data); } 完整代码bst.c #include stdio.h #include stdlib.h #include stdbool.h/* structure */ typedef struct Node // linkedlist node {int value; // value type is integerstruct Node *left; // left child nodestruct Node *right; // right child node }LinkNode;typedef struct Link // binary search tree {LinkNode *root; // root node of the treeint length; // the number of the tree } LinkBST;/* function prototype */ void add(LinkBST *, int); // add element to the tree void delete(LinkBST *, int); // delete element from the tree void pretravel(LinkNode *); // show element one by one,(root,left,right) void midtravel(LinkNode *); // show element one by one,(left,root,right) void posttravel(LinkNode *); // show element one by one,(left,right,root) int find(LinkNode *, int); // if find data,return 1(true),or return 0(false)/* main function */ int main(void) {// create binary search tree and initializationLinkBST bst;bst.root NULL;bst.length 0;printf(isempty(1:true, 0:false): %d, length is %d\n, bst.rootNULL, bst.length);add(bst, 15);add(bst, 8);add(bst, 23);add(bst, 10);add(bst, 12);add(bst, 19);add(bst, 6);printf(isempty(1:true, 0:false): %d, length is %d\n, bst.rootNULL, bst.length);printf(midtravel: );midtravel(bst.root);printf(\n);printf(pretravel: );pretravel(bst.root);printf(\n);printf(posttravel: );posttravel(bst.root);printf(\n);printf(find 10 (1:true, 0:false): %d\n, find(bst.root, 10));printf(find 9 (1:true, 0:false): %d\n, find(bst.root, 9));delete(bst, 23);delete(bst, 15);delete(bst, 6);printf(isempty(1:true, 0:false): %d, length is %d\n, bst.rootNULL, bst.length);printf(midtravel: );midtravel(bst.root);printf(\n);printf(pretravel: );pretravel(bst.root);printf(\n);printf(posttravel: );posttravel(bst.root);printf(\n);return 0; }/* subfunction */ LinkNode *createNode(int data) // create a node {LinkNode *node (LinkNode *)malloc(sizeof(LinkNode));if(node NULL){perror(Memory allocation failed);exit(-1);}node-value data;node-left NULL;node-right NULL;return node; }void add(LinkBST *bst, int data) // add element {// subfunction(recursion): add element to the binary search tree LinkNode *addNode(LinkNode *node, int data){if(node NULL){LinkNode *newnode createNode(data);node newnode;bst-length;return node;}if(data node-value) node-left addNode(node-left, data);else if(data node-value) node-right addNode(node-right, data);return node;}// root node receive the resultbst-root addNode(bst-root, data); }void delete(LinkBST *bst, int data) // delete element {// subfunction(recursion): delete element from the binary search tree LinkNode *del(LinkNode *node){if(node-left NULL){bst-length--;return node-right;}else if(node-right NULL){bst-length--;return node-left;}else if(node-left node-right){LinkNode *tmp node, *cur node-left;while(cur-right){tmp cur;cur cur-right;}node-value cur-value;if(tmp ! node) tmp-right cur-left;else tmp-left cur-left;bst-length--;return node;}}// subfunction: find delete node,return nodeLinkNode *delNode(LinkNode *node, int data){if(node NULL) return node;if(data node-value) node del(node);else if(data node-value) node-left delNode(node-left, data);else if(data node-value) node-right delNode(node-right, data);return node;} // root node receive the resultbst-root delNode(bst-root, data); }void pretravel(LinkNode *node) // show element one by one,(root,left,right) {if(node NULL) return ;printf(%d , node-value);pretravel(node-left);pretravel(node-right); }void midtravel(LinkNode *node) // show element one by one,(left,root,right) {if(node NULL) return ;midtravel(node-left);printf(%d , node-value);midtravel(node-right); }void posttravel(LinkNode *node) // show element one by one,(left,right,root) {if(node NULL) return ;posttravel(node-left);posttravel(node-right);printf(%d , node-value); }int find(LinkNode *node, int data) // if find data,return 1(true),or return 0(false) {if(node NULL) return 0;if(data node-value) return 1;if(data node-value) find(node-left, data);else if(data node-value) find(node-right, data); } 编译链接 gcc -o bst bst.c 执行可执行文件 ./bst
http://www.hkea.cn/news/14426766/

相关文章:

  • 东莞建设网站公司哪家好沈阳外贸网站制作公司
  • 网站搜索引擎优化教程wordpress子域名站点
  • 碧辉腾乐 网站建设合肥 企业网站设计
  • 如何做二级域名子目录网站龙岗区建设工程交易中心
  • 响应式网站建设原则哪里有网站建设加工
  • 网站上的3d产品展示怎么做wordpress 4.9.5
  • 哪个网站科技新闻好百度竞价是什么工作
  • 网站 页面 结构wordpress微信网站模板
  • pc网站案例建网通
  • 购物网站建设优缺点新品上市怎么做宣传推广
  • 招投标 网站建设 山西网站建设力度
  • 微信登录建设银行网站高邮网站建设
  • 项目案例 化妆品网站普通人开网店赚钱吗
  • 上海网站seo诊断西安注册公司多少钱
  • 外贸做哪些网站平台好地区性中介类网站建设
  • 做网站赚不到钱了做一个门户网站多少钱
  • 晋江网站网站建设山西传染病最新消息今天
  • 中象做网站怎么样光谷做网站推广怎么样
  • 机票最便宜网站建设苏州市住房和城乡建设局政务网站
  • 快站优惠券app家具品牌网站
  • 西安网站建设熊掌余姚市网站建设
  • 淘淘乐网站建设网络舆情监测平台
  • 微信公众号怎么做链接网站重庆建造师管理系统查询系统
  • 南通企业自助建站可以发外链的论坛有哪些
  • 桂林旅游网站建设用织梦做网站有什么公司会要
  • 宁夏住房和城乡建设厅网站首页dedecms 做微网站
  • 啥网站都能看的浏览器下载想学软件编程 哪个学校好啊
  • 企业的网站建设费用辽宁省网站制作
  • 北京地铁优化鲨皇seo
  • 网推软件seo任务平台