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

网站刷新新前台是什么意思wordpress仅搜索标题

网站刷新新前台是什么意思,wordpress仅搜索标题,wordpress 修改文章作者,上海网络推广百橙文章目录前言一、求二叉树节点个数二、求树的叶子结点个数三、求树的高度四、二叉树查找值为x的结点总结前言 笔者整理出了一些关于萌新在入门二叉树时容易犯的一些错误,你也来试试自己会不会掉到这些坑里把~ 一、求二叉树节点个数 错误示例: int Tre…

文章目录

  • 前言
  • 一、求二叉树节点个数
  • 二、求树的叶子结点个数
  • 三、求树的高度
  • 四、二叉树查找值为x的结点
  • 总结


前言

笔者整理出了一些关于萌新在入门二叉树时容易犯的一些错误,你也来试试自己会不会掉到这些坑里把~


一、求二叉树节点个数

错误示例:

int TreeSize(BTNode* root)
{if(root == NULL)return ;int size = 0;size++;TreeSize(root->left);TreeSize(root->right);return Size;
}

这里的错误是,每当递归一次时,其实是在函数栈帧中另外开辟了一个变量size,每次size++都是在新开辟的变量size上++。并没有影响到最开始的变量size。

正确示例:

int TreeSize(BTNode* root)
{if(root == NULL)return 0;static int size = 0;size++;TreeSize(root->left);TreeSize(root->right);return size;
}

在这个示例中,size将在静态区开辟,并且只会初始化一次,不用担心每次递归时会将size重新初始化为0。这样,size每次都可以正确的+1;
另外的方法就是,创建一个全局变量,并将整型变量的地址传入函数,通过变量的地址改变变量的大小。但是这样需要注意的是,需要每次要计数的时候手动将全局变量置为0。

二、求树的叶子结点个数

错误示例:

int TreeLeafSize(BTNode* root)
{if(root->left == NULL&&root->right == NULL){return 1;}return TreeLeafSize(root->left)+TreeLeafSize(root->right);
}

那么这里错在哪呢?
其实这里错在缺少一个前置判断

if(root == NULL)
{return 0;
}

如果没有这个判断条件的话,就会出现访问空指针的情况。

三、求树的高度

错误示例:

int TreeHeight(BTNode* root)if(root == NULL){return 0;}return TreeHeight(root->left)>TreeHeight(root->right)?TreeHeight(root->left)+1 :TreeHeight(root->right)+1;

这段代码逻辑上没有错,但是其中有一个非常大的诟病。当函数在递归时,会反复调用TreeHeight()。因为之前的调用没有将结果记下来,就导致每当需要上一次函数调用的结果时,又再次去调用函数。
改进:

int TreeHeight(BTNode* root)
{if(root == NULL){return 0;}int leftHeight = TreeHeight(root->left);int rightHeight = TreeHeigt(root->right);return leftHeight>rightHeight?leftHeight+1:rightHeight+1
}

四、二叉树查找值为x的结点

错误示例:

BTNode* TreeFind(BTNode* root,BTDataType x)
{if(root == NULL)return NULL;if(root->data == x){return root;}TreeFind(root->left,x);TreeFind(root->right,x);
}

这段代码逻辑看起来非常的自洽,但事实上逻辑上并不自洽。 首先要问自己一个问题:最下面的两次TreeFind的目的是什么?
事实上最下面两次TreeFind没有任何作用,因为你没有用到TreeFind的结果。

正确代码:

BTNode* TreeFind(BTNode* root,BtDataType x)
{if(root == NULL){return NULL;}if(root->data == x){return root;}BTNode* ret1 = TreeFind(root->left,x);if(ret1){return ret1;}BTNode* ret2 = TreeFind(root->left,x);if(ret2){return ret2;}}

总结

以上就是笔者对二叉树递归里的一些易错点的记录。代码纯手打,可能存在漏洞、瑕疵。如发现欢迎指正!

http://www.yayakq.cn/news/669161/

相关文章:

  • 甘肃省集约化网站建设网站开发建站微信公众号小程序
  • 做网站网络公司广告网站留电话不用验证码
  • php网站开发实例视频甘肃泾川县门户网站两学一做
  • 网站是用sql2012做的_在发布时可以改变为2008吗集团官方网站建设方案
  • 孝感市网站建设装潢设计用什么软件
  • 沈阳建设公司网站平面设计创意图片
  • 天地心公司做网站怎样网站建设专利申请
  • 网站建设推广怎么做网页模板快速建站工具
  • 牡丹江建设厅网站施工企业有没有制造费用
  • wordpress折叠菜单常州网站搜索优化
  • 品牌网站建设 2蝌蚪小企业网站内容运营方案案例
  • 免费官方网站创建中小企业网站制作哪家好
  • 网站后台开发北京网站开发网络公司
  • 黑色网站长沙做网站优化的公司
  • 1核做网站汶上1500元网站建设
  • 最牛的视频网站建设深圳市招聘网站
  • 电子商务网站建设与安全谢岗做网站
  • 信息发布类网站模板关于网站建设项目收取费用
  • 局域网下怎么访问自己做的网站中山网站制作专业
  • 网站建设维护合同书网页设计图片怎么居中对齐
  • 网站开发网页发稿服务
  • 财经资讯网站该怎么做推广石家庄网站制作网站
  • 新乡网站建设找哪家简单展示网站模板
  • 个人免费网站注册怎么登陆建设银行网站看开户行
  • 两个域名同一个网站做优化发布php做的网站
  • 如何做盆栽蔬菜网站网站申请流程
  • 网站建设 长摊 无形资产北京麒麟网站建设
  • 拟与 合作建设网站 请予审批景区网站的建设公司
  • 网站开发企业标准dz网站数据备份
  • 深圳团购网站设计企业建站公司排名为什么不好做