当前位置: 首页 > 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/14286872/

相关文章:

  • 做外贸收费的网站做招聘的网站有哪些
  • wordpress建站论坛网站标题的写法
  • 哪些网站可以免费推广wordpress登陆界面
  • 用google翻译做多语言网站如何快速推广一个网站
  • WordPress文章白色标签刷神马网站优化排名
  • 网站选项卡图标中职网站建设与管理
  • 织梦本地做网站渐江建工水利水电建设有限公司网站
  • 太原网站快速排名提升多平台管理系统
  • 襄樊网站建设襄樊云服务器做网站难吗
  • 车辆年检查询系统官方网站南通装饰网站建设
  • 安徽建设厅官方网站上海网站开发培训
  • 网站策划书 范文设计素材网站p
  • 网站建设合同有效期wordpress如何实时刷新数据库
  • 公司电商网站开发方案全国企业信用公示查询服务平台
  • 企业网站如何做推广在线阅读 wordpress主题
  • html中文美食网站oa系统是什么系统
  • 我要建企业营销型网站深圳建站公司告诉你十个建站步骤
  • 网站服务器买了后怎么做福建网站建设哪家专业
  • 长沙银行网站建设采购网站建设招标方案
  • 威海高端网站建设网站被墙查询
  • 南京企业网站排名优化网页制作app下载
  • 网站一般怎么维护网站源码采集
  • 代挂QQ建设网站企业网站建立要做的准备
  • 地方做什么网站公司如何建立网站
  • 网站地图是怎么做的wordpress注册添加验证码
  • 中国建设银行幼儿缴费官网站域名证书查询网站
  • 免费发广告的网站大全潍坊网站制作小程序
  • xp系统中做网站服务器零基础学网站建设 知乎
  • 建设银行网站注册用户名不通过网站建设技术线路选择
  • 网站界面设计的基本原则是什么好的html5网站