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

企业网站怎么做百度大连做网站报价

企业网站怎么做百度,大连做网站报价,做地区招聘网站,携程网站建设评价二叉树概念 再看二叉树基本操作前#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/14416736/

相关文章:

  • 甘肃三轮建设监理网站汕头企业网站公司
  • 龙口网站建设域名买好了怎么做网站
  • 摄影比赛投稿网站阜宁做网站公司
  • 企业管理六大体系厦门seo报价
  • 物流网站建设公司在线制图网
  • 南昌制作网站的公司比较好的 网站统计系统 php源码
  • 学网站开发好找工作吗山东省建设工程信息网官网
  • 产品服务展示型网站有哪些wordpress是开源工具吗
  • 网站上删除信息如何做wordpress 注册登录
  • 在哪个网站上做兼职比较好wordpress建站注册新用户
  • h5网站开发中心百度爱采购排名
  • 临沂网站建设周口外贸WordPress主机推荐
  • 沈阳设计网站中国建筑人才信息网
  • 巴楚网站建设网站是先解析后备案
  • 云游戏网站在线玩佛山做网站的公司哪家好
  • 自建英文网站东莞建设监督网站
  • 深圳移动官网网站建设好看的网页界面设计
  • 免费招聘网站排行榜无锡哪里做网站好
  • 做微商截图的网站免费推广网站入口2022
  • 网站怎么加留言找我家是做的视频网站
  • 建站推广哪里有建站新闻资讯纬天建筑工程信息网
  • 做推广的网站带宽需要多少合适网站怎么做百度认证
  • 免费空间已经注册 怎么做网站中企动力邮箱登陆入口
  • 网站内链建设方法广西桂川建设集团网站
  • 网站建设公司怎么徐闻网站开发公司
  • 做网站都需要准备什么余姚网站制作公司
  • 海南 网站制作在手机上创建网站
  • 福州网站建设咨询腾讯营销平台
  • 网站建设和赚钱方法在淘宝做网站可以改域名吗
  • 松江微网站建设江苏省建设信息网站管理平台