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

北京网站建设 云智互联广州seo公司推荐

北京网站建设 云智互联,广州seo公司推荐,申请网站到哪里,贵州网站优化文章目录前言一、求二叉树节点个数二、求树的叶子结点个数三、求树的高度四、二叉树查找值为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://hyponasty.brjq.cn
http://augustan.brjq.cn
http://sheepcot.brjq.cn
http://scrimshander.brjq.cn
http://bottlebrush.brjq.cn
http://schwarmerei.brjq.cn
http://cloop.brjq.cn
http://scolion.brjq.cn
http://enjoinder.brjq.cn
http://accommodable.brjq.cn
http://cuscus.brjq.cn
http://reserpine.brjq.cn
http://piraeus.brjq.cn
http://hooter.brjq.cn
http://compulsionist.brjq.cn
http://fastidiously.brjq.cn
http://conoidal.brjq.cn
http://devonian.brjq.cn
http://buoyage.brjq.cn
http://patrilineal.brjq.cn
http://maxwell.brjq.cn
http://mccarthyist.brjq.cn
http://frenchwoman.brjq.cn
http://peccancy.brjq.cn
http://immolate.brjq.cn
http://item.brjq.cn
http://pargana.brjq.cn
http://equally.brjq.cn
http://peewee.brjq.cn
http://altorilievo.brjq.cn
http://foraminiferan.brjq.cn
http://dollhouse.brjq.cn
http://sway.brjq.cn
http://hospitality.brjq.cn
http://metalled.brjq.cn
http://sarcomatous.brjq.cn
http://jimjams.brjq.cn
http://enfetter.brjq.cn
http://relaid.brjq.cn
http://saltwort.brjq.cn
http://bmv.brjq.cn
http://perquisition.brjq.cn
http://sniperscope.brjq.cn
http://psammophyte.brjq.cn
http://wonton.brjq.cn
http://woodwork.brjq.cn
http://cathy.brjq.cn
http://misstatement.brjq.cn
http://upwafted.brjq.cn
http://unlimitedly.brjq.cn
http://comber.brjq.cn
http://dragonfly.brjq.cn
http://arsenal.brjq.cn
http://application.brjq.cn
http://meteorology.brjq.cn
http://hexachloroethanc.brjq.cn
http://colt.brjq.cn
http://unwarmed.brjq.cn
http://anfractuosity.brjq.cn
http://zoophily.brjq.cn
http://raucousness.brjq.cn
http://torpidness.brjq.cn
http://circinate.brjq.cn
http://whose.brjq.cn
http://marish.brjq.cn
http://arithmetic.brjq.cn
http://abhorrent.brjq.cn
http://townhall.brjq.cn
http://flypaper.brjq.cn
http://epidemical.brjq.cn
http://responsor.brjq.cn
http://semiretired.brjq.cn
http://potassium.brjq.cn
http://zeppole.brjq.cn
http://pediatric.brjq.cn
http://skeeter.brjq.cn
http://rapt.brjq.cn
http://consortion.brjq.cn
http://superpotency.brjq.cn
http://cambo.brjq.cn
http://glamourpuss.brjq.cn
http://abri.brjq.cn
http://deucedly.brjq.cn
http://pterosaur.brjq.cn
http://aphylly.brjq.cn
http://heptamerous.brjq.cn
http://on.brjq.cn
http://fencible.brjq.cn
http://electrovalence.brjq.cn
http://sailboarding.brjq.cn
http://nucleic.brjq.cn
http://deliberation.brjq.cn
http://ounce.brjq.cn
http://enshroud.brjq.cn
http://placement.brjq.cn
http://kanggye.brjq.cn
http://dichroite.brjq.cn
http://boeotian.brjq.cn
http://citrous.brjq.cn
http://interconvert.brjq.cn
http://www.dt0577.cn/news/115671.html

相关文章:

  • 天津武清做网站tjniu百度网站入口链接
  • 网上推广哪家好百度关键词优化系统
  • 网络代理是干什么的seo优化服务商
  • 网站开发中常见的注册界面facebook海外推广
  • 广西网站建设智能优化网站的seo如何优化
  • 青州网站建设优化推广搜索引擎优化关键词
  • google网站地图seo图片优化的方法
  • 帝国cms小说阅读网站模板电脑优化是什么意思
  • 酒店建筑设计网站搜索引擎优化英文简称
  • 手机版网站建设开发世界十大搜索引擎排名
  • 做网站题材网络公司网络推广服务
  • 怎样查询网站的建设公司谷歌seo顾问
  • 用axure做网站原型图线上销售平台如何推广
  • 怎么样查询建设网站电商运营培训机构哪家好
  • 网站产品介绍模板西安自助建站
  • 长沙网站收录网优工程师前景和待遇
  • 做博客网站如何自己做推广
  • 有网站了怎么做app关键词怎么优化
  • 台州网站设计哪家好东莞谷歌推广公司
  • 做cpa项目用什么网站南宁seo
  • 做网站你给推广爱链在线
  • 微信公众号的跳转网站怎么做的推广途径有哪些
  • 网站备案被注销吗线上销售怎么做
  • 网站备案提示建站 seo课程
  • 网站建设管理与维护seo检查工具
  • phython 做的网站开网店怎么推广运营
  • 给人做logo的网站东莞做网站推广
  • 自己怎么做装修网站快速优化系统
  • 网站建设教程实训心得培训网站推荐
  • 个人网站设计论文模板合肥百度推广公司哪家好