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

广州网站建设网站托管运营福田祥菱m

广州网站建设网站托管运营,福田祥菱m,网页制作多少钱一个页面,平面磨床东莞网站建设#上一章我们把搜索二叉树的知识给传授完毕#xff0c;如果认真的看下去并且手打了几遍#xff0c;基本上内部的逻辑还是可以理解的#xff0c;那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀#xff1f;如果用上一次学的层次遍历来求树高#xff0c;有点小题…#上一章我们把搜索二叉树的知识给传授完毕如果认真的看下去并且手打了几遍基本上内部的逻辑还是可以理解的那我们现在就截至继续学习树的一些重要知识啦~~ 树高怎么求呀如果用上一次学的层次遍历来求树高有点小题大做了这章我们就教大家如何用递归来求树高。 如何查找树里的元素呢 哈夫曼树是个啥子 在这一章节我都会很细致的给大家说明啦~ 树高咋求 我们现在掌握的方法只有层次遍历来求树高那我们怎么用递归来求树高呢 我们现在先拿最极端情况来说明如果一棵树没有一个元素那我们的树高是不是为0这样来看我们的终止条件就找到啦没错就是当根节点为空的是后我们就返回0 我们的树高应该看最长的一部分那我们就应该先定义两个高度一个是左子树高度另一个是右子树高度之后我们比较左子树高度和右子树高度哪个高哪个高哪个就决定了树高因为左子树和右子树都是从第二层开始才有的所以我们最后返回的树高应该让左右子树1。 这样来看我们大概的逻辑不就出来了嘛 先写一个极端判断条件然后比较左右子树高度即可。 int treeheight(treenode* root) {if(rootNULL)return 0;int lhtreeheight(root-lchild);int rhtreeheight(root-rchild);return lhrh?lh1:rh1; } 这样看来是不是还挺简单嘞嘿嘿。 那我们接着来下面的知识如何查找元素嘞 怎么查找树里面的元素 查找的话我们大概想一下就知道要用bool函数来判断啦在这个结构中我们首先要把根节点和查找的元素定义起来。 我们怎么查找呢肯定也是一层一层查找如果一棵树都查完了也没找的这个元素那我们就可以说这棵树没有这个元素。 由此我们可以得到我们判断结束的条件当树不为空时候我们就循环如果为空我们就结束判断。 代码部分也是很简单如下   bool find(treenode* root,int target) {while(root){if(root-valuetarget)return 1;if(root-valuetarget)rootroot-lchild;if(root-valuetarget)rootroot-rchild;} } 由以上内容和之前的文章我们现在掌握了如何构建查找二叉树如何前中后序遍历如何层次遍历如何求树高如何查找元素二叉树中基本的知识我们大概已经学完啦下面我们来认识一个重要的树哈夫曼树。 哈夫曼树 定义 我们首先了解哈夫曼树的定义 对于哈夫曼树我们的权值只有叶子结点 性质 1.权值越大的叶子节点越靠近根节点 2.权值越小的叶子节点越远离根节点 3.哈夫曼树并不唯一 4.哈夫曼树的子树也是哈夫曼树 5.哈夫曼树无度为1的结点 这些性质也是比较好看出来的在这里就不多余赘述啦~ 哈夫曼树的构建 结点的不同 在我们构建搜索二叉树时候我们初始将左右子树设置为空但是在我们的哈夫曼树的初始化时我们应该将左右子树保留。 如下 struct treenode{int weight;treenode* lchild;treenode* rchild;treenode(int v,treenode* l,treenode* r){weightv,lchildl,rchildr;} }; 因为我们左右孩子会构造出来我们的根节点所以左右孩子这里不为空。 构建过程 1.我们首先要把每个节点初始化之后push进我们的vector里面 2.定义左孩子右孩子根节点三个变量 3.对元素进行降序排列之后再弹出最后两个元素同时利用最后两个元素构建出我们的父节点。 此时的父节点需要new来开辟空间。 过程也相对容易接下来是代码部分 void build(vectorint a){vectortreenode*b;for(int i0;ia.size();i){treenode* tmpnew treenode(a[i],NULL,NULL);b.push_back(tmp);}treenode* lNULL,*rNULL,*pNULL;while(b.size()1){sort(b.begin(),b.end(),[](treenode* a,treendoe* b){return a-weightb.weight;});lb[b.size()-1];b.pop_back();rb[b.size()-1];b.pop_back();pnew treenode(l-weightr-weight,l,r);}return p; } 求WPL 怎么求wpl呢这里就用到了我们之前学的层次遍历啦。 我们首先层次遍历判断结点是否没有左右孩子这样就能找到我们的叶子节点然后乘以我们的层次-1如此加和进去就可以得到我们的wpl啦 void layersearch(treenode* root) {queuetreenode*q;q.push(root);treenode* lastroot;treenode* nlastNULL;while(!q.empty()){treenode* tmpq.front();couttmp-weight;if(tmp-lchildNULLtmp-rchildNULL){wpltmp-weight*L;}q.pop();if(tmp-lchildNULL){q.push(tmp-lchild);nlasttmp-lchild;}if(tmp-rchildNULL){q.push(tmp-rchild);nlasttmp-rchild;}if(tmplast){coutendl;L;lastnlast;}}} //以上就是我们树里面残留的问题啦一些基本的原理和代码部分我都有提到在这里还得看大家自己下去的实践能力多打代码才能更透彻的了解理解底层逻辑。 如果我的文章对对大家有帮助的作用希望大家多多支持哦~~谢谢大家的点赞关注啦~ 阿里嘎多everybody~
http://www.w-s-a.com/news/623436/

相关文章:

  • 防止做网站的人修改数值门户网站架构
  • 电子项目外包网站考二建需要什么学历和专业
  • 做网站推广引流效果好吗电商推广技巧
  • 亦庄网站建设价格广州网站推广服务
  • 十大免费ppt网站下载重庆在线高校平台登录
  • 做环保网站案例百度seo教程
  • 体育用品网站模板网站建设话术
  • 潍坊网站建设服务商做网站多久能盈利
  • 嘉定区做网站房产信息查询官网
  • 网站直播间 是怎么做的唐山论坛建站模板
  • 深圳洲聚网站建设wordpress 泛解析
  • 五金东莞网站建设技术支持wordpress 添加模板
  • 网站申请专利春节网页设计素材
  • 进网站备案md风格的wordpress主题
  • 如何建站网站十大免费建站app
  • 工作号做文案素材的网站晋城网站设计人
  • 建设部网站官网 施工许可怎样建网站 需要
  • 什么网站都能打开的浏览器同城小程序怎么推广
  • 在电脑上怎么做网站网址seo分析
  • 石家庄做网站网络公司电子商务营销推广
  • 网站开发 前端专做婚礼logo的网站
  • 同创企业网站建设拖拽建设网站源码
  • wordpress调用网站标题网站页面排版
  • 哈尔滨营销网站建设电子商城网站开发要多少钱
  • 免费织梦导航网站模板下载地址自己建站网站
  • 获取网站访客qq号码代码做抽奖网站违法吗
  • 湖南大型网站建设公司排名偷网站源码直接建站
  • 网站建设周期规划北京网站设计必看刻
  • 如何做自己的在线作品网站深圳网站设计公司的
  • 网站开发外包公司wordpress最简单模板