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

企业网站怎么做百度广州番禺网站制作公司

企业网站怎么做百度,广州番禺网站制作公司,深圳福田区,php网站怎么做post订单二叉树概念 再看二叉树基本操作前#xff0c;再回顾下二叉树的概念#xff0c; 二叉树是#xff1a; 1. 空树 2. 非空#xff1a;根节点#xff0c;根节点的左子树、根节点的右子树组成的。 从概念中可以看出#xff0c;二叉树定义是递归式的 二叉树构成#xff1…二叉树概念 再看二叉树基本操作前再回顾下二叉树的概念 二叉树是 1. 空树 2. 非空根节点根节点的左子树、根节点的右子树组成的。 从概念中可以看出二叉树定义是递归式的  二叉树构成根 左子树 右子树构成的。 前序遍历是 根 左子树 右子树 中序遍历是 左子树 根 右子树 后序遍历是左子树 右子树 根 根据上面的插图 前序遍历应该是: 1 2 3 N N N 4 5 N N 6 N N 那么你能试着说出中序和后序吗 中序和后序如下图所示你看你写对了吗 我们学习普通链式二叉树的增删查改是没有意义的因为我们现在学习普通链式二叉树是为了以后的搜索二叉树和AVL 红黑树打基础的还有就是很多二叉树的题都是出在普通链式二叉树结构。 这是一个普通的搜索二叉树二叉树的左子树比根小右子树比根大。 如果搜索二叉树走中序遍历就是个有序二叉树。 二叉树的构建 在学习二叉树的基本操作前需先要创建一棵二叉树然后才能学习其相关的基本操作。由于现在大家对二叉树结构掌握还不够深入为了降低大家学习成本此处手动快速创建一棵简单的二叉树快速进入二叉树操作学习等二叉树结构了解的差不多时我们反过头再来研究二叉树真正的创建方式。(注意下述代码并不是创建二叉树的方式 ) #includestdio.h #includestdlib.h #includestring.h typedef struct BinaryTree {struct BinaryTree* _left;struct BinaryTree* _right;int val; }BTNode;BTNode* buynode(int x) {BTNode* newnode (BTNode*)malloc(sizeof(BTNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-val x;newnode-_left NULL;newnode-_right NULL;return newnode; } int main() {BTNode* newnode1 buynode(1);BTNode* newnode2 buynode(2);BTNode* newnode3 buynode(3);BTNode* newnode4 buynode(4);BTNode* newnode5 buynode(5);BTNode* newnode6 buynode(6);newnode1-_left newnode2;newnode2-_left newnode3;newnode1-_right newnode4;newnode4-_left newnode5;newnode4-_right newnode6;return 0; } 二叉树的遍历  学习二叉树结构最简单的方式就是遍历。所谓二叉树遍历(Traversal)是按照某种特定的规则依次对二叉树中的节点进行相应的操作并且每个节点只操作一次。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一也是二叉树上进行其它运算的基础。 前序遍历 void PreOrder(BTNode* root) {if (root NULL){printf( NULL );return;}printf(%d , root-val);PreOrder(root-_left);PreOrder(root-_right); } 是不是觉得很简单我们先运行下结果 跟我们之前预测的一模一样为了更好的了解前序遍历我画一下递归图。 中序遍历 就是把代码换个顺序就变成了中序遍历为了深刻理解递归过程建议像上面一样自己画个递归过程理解。 void InOrder(BTNode* root) {if (root NULL){printf( NULL );return;}InOrder(root-_left);printf(%d , root-val);InOrder(root-_right); } 运行结果 后序遍历 void PostOrder(BTNode* root) {if (root NULL){printf( NULL );return;}PostOrder(root-_left);PostOrder(root-_right);printf(%d , root-val); } 运行结果 前序 中序 后序遍历结果 求节点个数以及高度等 二叉树的节点个数 很多人可能都是想这么求节点个数的但其实是错误的方法因为size是局部变量 出了作用域就销毁了 根本求不出正确节点个数。 那么我们加上static 让它变成静态变量呢 可以求出正确答案因为静态变量在静态区全局变量也在静态区相当于一个全局变量出了作用域并不会被销毁而且只会走一次初始化因此答案是正确的。 但有一个问题如果我要再次调用这个函数求节点个数呢 答案就会是错误的因为静态变量只会走一次初始化。 解决办法也有就是在前面把size设为全局变量 再次调用时归为0即可 答案还是6但这种方法太low了。  正确的求节点个数代码 //节点个数 int Treesize(BTNode* root) {return root NULL ? 0 : 1 Treesize(root-_left) Treesize(root-_right); } 思路比如学校里面要统计在校人数校长不可能一个个问每个人111......而是布置任务给辅导员或者班主任班主任或者辅导员会布置给班长去统计各班学生个数班长汇报给辅导员或班主任班主任或者辅导员汇报给校长校长最后在汇报结果加上自己就是学校在校总人数。 二叉树的叶子节点个数 叶子节点就是度为0的节点。 首先要判断根为不为空 再判断根节点的左右结点存不存在即可。 //叶子结点 int Treeleafsize(BTNode* root) {if (root NULL){return 0;}if (root-_left NULL root-_right NULL){return 1;}return Treeleafsize(root-_left) Treeleafsize(root-_right); } 二叉树第k层的节点个数 //第K层结点个数 int TreeKlevelsize(BTNode* root, int k) {assert(k 0);if (root NULL){return 0;}if (k 1){return 1;}return TreeKlevelsize(root-_left, k - 1) TreeKlevelsize(root-_right, k-1); } 完整代码 #includestdio.h #includestdlib.h #includestring.h #includeassert.h typedef struct BinaryTree {struct BinaryTree* _left;struct BinaryTree* _right;int val; }BTNode;BTNode* buynode(int x) {BTNode* newnode (BTNode*)malloc(sizeof(BTNode));if (newnode NULL){perror(malloc fail);exit(-1);}newnode-val x;newnode-_left NULL;newnode-_right NULL;return newnode; }void PreOrder(BTNode* root) {if (root NULL){printf( NULL );return;}printf(%d , root-val);PreOrder(root-_left);PreOrder(root-_right); } void InOrder(BTNode* root) {if (root NULL){printf( NULL );return;}InOrder(root-_left);printf(%d , root-val);InOrder(root-_right); } void PostOrder(BTNode* root) {if (root NULL){printf( NULL );return;}PostOrder(root-_left);PostOrder(root-_right);printf(%d , root-val); }//节点个数 int Treesize(BTNode* root) {return root NULL ? 0 : 1 Treesize(root-_left) Treesize(root-_right); }//叶子结点 int Treeleafsize(BTNode* root) {if (root NULL){return 0;}if (root-_left NULL root-_right NULL){return 1;}return Treeleafsize(root-_left) Treeleafsize(root-_right); } //第K层结点个数 int TreeKlevelsize(BTNode* root, int k) {assert(k 0);if (root NULL){return 0;}if (k 1){return 1;}return TreeKlevelsize(root-_left, k - 1) TreeKlevelsize(root-_right, k-1); } int main() {BTNode* newnode1 buynode(1);BTNode* newnode2 buynode(2);BTNode* newnode3 buynode(3);BTNode* newnode4 buynode(4);BTNode* newnode5 buynode(5);BTNode* newnode6 buynode(6);newnode1-_left newnode2;newnode2-_left newnode3;newnode1-_right newnode4;newnode4-_left newnode5;newnode4-_right newnode6;PreOrder(newnode1);printf(\n);InOrder(newnode1);printf(\n);PostOrder(newnode1);printf(\n);printf(Treesize:%d\n, Treesize(newnode1));printf(Treeleafsize:%d\n, Treeleafsize(newnode1));printf( TreeKlevelsize:%d\n, TreeKlevelsize(newnode1,3));return 0; }
http://www.hkea.cn/news/14344752/

相关文章:

  • 那些网站是做金融行业php网站端口
  • 网站平台建设是什么余姚网站建设找哪家
  • 网站编程培训机构排名前十加入电商平台需要多少钱
  • 襄阳云平台网站建设塘厦三正半山酒店
  • 中国贸易网是什么网站建模培训
  • 网站建设项目组织结构图服务器网站绑定域名网站建设
  • 益阳网站seo介绍类网站建设策划书范文
  • 浙江省建设工程协会网站有免费做海报的网站吗
  • 打好代码怎么做网站pc网站开发成app难度
  • 铁汉生态建设有限公司网站创业公司用wordpress
  • 电子商务网站建设域名百度医疗网站建设
  • 宜宾有什么大型网站建设公司WordPress minn主题破解版
  • 建站费用参考萧县做网站
  • 深圳做网站可用乐云seo十年校园网站建设意见表填写
  • 刚刚建设的网站如何放图片wordpress 查看密码
  • 建购物网站需要多少钱大学生创新创业大赛ppt模板
  • 网站代码需要注意什么问题爱站网在线全集私人影视
  • 怎么查找网站后台品牌故事
  • 临沂网站设计制作营销型单页网站
  • 苏州建站公司认准苏州聚尚网络河南搜索引擎推广公司
  • 软件或者网站的搜索怎么做中国商标查询网官网
  • 网站建设工资做微信大转盘有哪些网站
  • 有什么网站可以接手工加工做wordpress 定时发布 原理
  • 红酒公司网站源码电商网站前端模板
  • dnn wordpress网站优化目的
  • 盐城网站开发渠道合作网站建设与维护的试卷
  • 北京平台网站建设哪里好新公司网站怎么做推广
  • 个人设计网站模板vs网站搜索栏怎么做
  • 5173游戏交易网站源码河北明迈特的网站在哪里做的
  • 中国建设银行手机wap网站建设网站技术要求