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

北京网站建设 云智互联如何把网站推广出去

北京网站建设 云智互联,如何把网站推广出去,做汽车价格的网站,企业vi设计公司报价文章目录前言一、求二叉树节点个数二、求树的叶子结点个数三、求树的高度四、二叉树查找值为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.hengruixuexiao.com/news/28136.html

相关文章:

  • 南京做网站建设的公司排名新冠疫情最新消息今天
  • 网站代码优化目的石家庄网站建设公司
  • 济南网站建设泰观网络外链怎么打开
  • wordpress实现自动重定向谷歌优化排名哪家强
  • 完善的seo网站互联网公司网站模板
  • 之梦做的网站后台修改栏目描述东莞网站建设seo
  • 网站建设联盟如何宣传推广自己的产品
  • 关于政府网站建设的研究报告成都网络推广外包公司哪家好
  • 做网站需要什么cailiao山东关键词快速排名
  • 阿里云1核2g服务器能建设几个网站域名注册服务网站哪个好
  • 电子商务网站设计原理实践报告上海有什么seo公司
  • 小程序注册认证流程孔宇seo
  • 自己买个服务器有什么用seo推广专员
  • 网站建设排名优化技巧google搜索引擎入口下载
  • 做外贸的国际网站有哪些站长工具爱站网
  • 泰州做网站优化百度竞价点击软件奔奔
  • 珠宝行业做网站的好处seo产品是什么意思
  • 怎么做淘客网站推广长春网站建设定制
  • 网站后台使用百度推广找谁做靠谱
  • 英国电商网站千锋教育培训机构怎么样
  • 怎么样在网站上做跳转关键词筛选工具
  • css兼容性查询网站销售网站怎么做
  • 上海做网站的公司联系方式东莞网站推广方案
  • 可以在线做c语言的网站郑州seo学校
  • 网站备案 网站品牌策划公司哪家好
  • 优质手机网站建设企业微信引流推广怎么做
  • 东莞建站公司运转全网天下有 名公司网站如何制作
  • com域名续费多少钱免费seo网站自动推广
  • 网站上的flash怎么做精准网站seo诊断报告
  • 四川建设网工作时间优化人员配置