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

学生作业 制作一个网站西峡微网站开发

学生作业 制作一个网站,西峡微网站开发,万户网络合肥,内蒙古城乡建设部网站首页目录 1.求二叉树总的节点的个数 1.容易想到的方法 代码 缺陷 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 其他写法 运行结果 2.最好的方法:分而治之 代码 运行结果 2.求二叉树第K层节点的个数 错误代码 运行结果 修正 运行结果 其他写法 1.求二…目录 1.求二叉树总的节点的个数 1.容易想到的方法 代码 缺陷 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 其他写法 运行结果 2.最好的方法:分而治之 代码 运行结果 2.求二叉树第K层节点的个数 错误代码 运行结果 修正 运行结果 其他写法 1.求二叉树总的节点的个数 1.容易想到的方法 借助103.【C语言】数据结构之二叉树的三种递归遍历方式文章的遍历函数的思想 以前序遍历函数的思想为例 void PreOrder(BTNode* root) {//先判断是否为空树(叶节点的左节点和右节点均为空树)if (root NULL){printf(NULL );return;}//按根--左子树--右子树的顺序遍历printf(%d ,root-data);PreOrder(root-left);PreOrder(root-right); } 设计TreeSize函数,设size存储二叉树的总的节点的个数,由于局部变量在函数返回时会发生销毁,显然应该使用全局变量size,在main函数外部写int size;(默认初始值为0) 代码 #include Tree.h int size; void TreeSize(BTNode* root) {if (root NULL)//为NULL,则返回,不1{return;}size;//根节点1TreeSize(root-left);TreeSize(root-right); }int main() {BTNode* root CreateTree();TreeSize(root);printf(TreeSize%d, size);return 0; } 备注:CreateTree建立的是下面这棵二叉树 递归的思想和103.【C语言】数据结构之二叉树的三种递归遍历方式文章相同,不再赘述 运行结果 缺陷 本方法有缺陷,当多次调用时必须手动为size置0 若像下面这样不置0 int main() {BTNode* root CreateTree();TreeSize(root);printf(TreeSize%d\n, size);TreeSize(root);printf(TreeSize%d\n, size);TreeSize(root);printf(TreeSize%d\n, size);return 0; } 运行结果会出错 每一次调用前必须手动置0,像下面这样 int main() {BTNode* root CreateTree();TreeSize(root);printf(TreeSize%d\n, size);size 0;TreeSize(root);printf(TreeSize%d\n, size);size 0;TreeSize(root);printf(TreeSize%d\n, size);return 0; } 思考:能否在TreeSize函数内定义静态变量解决size的问题呢? 答:不可以,理由1:无论函数调用多少次,写在函数内的静态变量只会被初始化一次,即第二,三,四,...次调用不会初始化.理由2:在函数外部无法访问静态变量 其他写法 TreeSize多传一个参数 #include Tree.h void TreeSize(BTNode* root,int* psize) {if (root NULL)//为NULL,则返回,不1{return;}(*psize);//根节点1TreeSize(root-left, psize);TreeSize(root-right, psize); }int main() {BTNode* root CreateTree();int size1 0;TreeSize(root, size1);printf(TreeSize%d\n, size1);int size2 0;TreeSize(root, size2);printf(TreeSize%d\n, size2);int size3 0;TreeSize(root, size3);printf(TreeSize%d\n, size3);return 0; } 运行结果 2.最好的方法:分而治之 形象说法:找下属分担任务(递归),让下属帮忙计数,下属统计好个数交给上司(此方法不用定义size) 递推:根将任务交给左子树和右子树,左子树和右子树将任务分别交给它们的左子树和右子树,左子树和右子树将任务分别交给它们的左子树和右子树...一直到空树结束 代码 int TreeSize(BTNode* root) {if (root NULL){return 0;}return TreeSize(root-left) 1 TreeSize(root-right);//1加的是自己本身 }int main() {BTNode* root CreateTree();printf(TreeSize%d\n, TreeSize(root));printf(TreeSize%d\n, TreeSize(root));printf(TreeSize%d\n, TreeSize(root));return 0; } 运行结果 可见无论TreeSize被执行多少次,打印的结果都是一样的,从而避免了要将size置为0的问题 2.求二叉树第K层节点的个数 分析:比如求下图K3层的节点个数,按递归思想分析 递推:关键点:要以不同的视角来看待第K层 求K层--求根节点的左右子树的第K-1层--求根节点的左右子树的第K-2层--...--求根节点的左右子树的第1层 由上述分析可知TreeLevel函数需要BTNode* root和int k两个参数,这里k必须大于0(assert(k0);) 错误代码 int TreeLevel(BTNode* root, int k) {assert(k0);if (root NULL){return 0;}int lnum TreeLevel(root-left, k - 1);int rnum TreeLevel(root-right, k - 1);return lnum rnum; }int main() {BTNode* root CreateTree();printf(TreeLevel%d, TreeLevel(root, 3));return 0; } 运行结果 运行结果显然是有问题的,怎么修正? 修正 错误原因:考虑其一没有考虑其二,if判断处一直返回0,没有返回1的情况,导致00...00 if (root NULL){return 0;} TreeLevel返回有两种情况:1.根节点为NULL 2.k1 修改后 int TreeLevel(BTNode* root, int k) {assert(k0);if (root NULL){return 0;}if (k 1){return 1;}int lnum TreeLevel(root-left, k - 1);int rnum TreeLevel(root-right, k - 1);return lnum rnum; } 运行结果 结果正确 其他写法 不用变量存储,直接返回相加的值 int TreeLevel(BTNode* root, int k) {assert(k0);if (root NULL){return 0;}if (k 1){return 1;}return TreeLevel(root-left, k - 1) TreeLevel(root-right, k - 1); }
http://www.dnsts.com.cn/news/269356.html

相关文章:

  • 一鸿建设设计网站中信建设有限责任公司盐城高铁城
  • 建设公司网站的会计分录安阳做网站
  • 咸宁网站定制发展速度迅猛 具有丰富的网站建设经验
  • 做网站图片wordpress标题转英文
  • 怎么查询网站的备案号ps教程自学网
  • 宁波高质量品牌网站设计厂家昆山网站建设第一品牌
  • 青岛网站设计哪家便宜非响应式网站优点
  • 贵阳有做网站的公司吗wordpress网站图片
  • 企业网站建设的基本原则为黄骅港赶海时间表
  • 莫名接到网站建设电话网站做接口排线方法
  • 做电影下载网站需要什么软件国内网站建设哪家好
  • 高端网站建设机构网站由哪些部分组成部分
  • 找人做网站如何担保创意设计图案
  • 台州网站优化wordpress search sql
  • t型网站域名和版面驻马店网站开发
  • 网站建设合同模板91075如何将自己做的网站推广出去
  • 做名片用哪个网站工程建设项目网站
  • 网站建设材料汇报公众号微信小程序是什么
  • 什么企业做网站比较好什么是商城网站建设
  • 阿里云虚拟主机做网站wordpress媒体大小
  • 网站改版 htmlwordpress文件上传管理
  • wordpress多导航栏湖南seo推广服务
  • 欧美模板网站建设移动版网站模板
  • 贷款网站建设方案深圳网站程序开发制作
  • 天天炫拍免费做相册管方网站下载多站点网站群的建设与管理
  • 网站品牌栏目建设情况网站后台申请邮箱
  • 企业网站颜色除了个性化阶段
  • 邵武网站建设wordpress 注册码
  • 网站建设论坛排名wordpress店铺模板制作教程
  • 国际化网站设计wordpress网站测速