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

邯郸网站设计费用免费一键生成短链接

邯郸网站设计费用,免费一键生成短链接,做网红用哪个网站,做小程序的平台二叉树 二叉树#xff08;binary tree#xff09;是一棵树#xff0c;其中每个节点都不能有多于两个的子节点二叉树的一个性质是一颗平均二叉树的深度要比节点个数N小得多#xff08;重点#xff09;#xff0c;对二叉树的分析得出其平均深度为O(N\sqrt NN​)#xff0…二叉树 二叉树binary tree是一棵树其中每个节点都不能有多于两个的子节点二叉树的一个性质是一颗平均二叉树的深度要比节点个数N小得多重点对二叉树的分析得出其平均深度为O(N\sqrt NN​)而对于特殊类型的二叉树即二叉查找树binary search tree其深度的平均值是O(logN)。不过极端情况如下案例深度可以达到N-1 实现 因为一个二叉树节点最多有两个子节点所有可以保存直接连接到他们的链。树节点的声明在结构上类似双向链表在声明中节点就是element的信息加上两个其他节点的引用left和right组成的结构。 /*** 二叉树节点对象定义** author liaojiamin* Date:Created in 15:24 2020/12/11*/ public class BinaryNode {private Object element;private BinaryNode left;private BinaryNode right;public BinaryNode(Object element, BinaryNode left, BinaryNode right) {this.element element;this.left left;this.right right;}public Object getElement() {return element;}public void setElement(Object element) {this.element element;}public BinaryNode getLeft() {return left;}public void setLeft(BinaryNode left) {this.left left;}public BinaryNode getRight() {return right;}public void setRight(BinaryNode right) {this.right right;} }我们习惯在画链表的时候使用矩形标识当我们表达树的时候用圆圈并用直线连接因为他实际上是图graph。当涉及树的时候我们也不明显的画出null节点因为具有N个节点的每一个二叉树都需要N1个null节点。二叉树有许多与搜索无关的引用主要的是编译器的设计领域。 案例表达式树 图中线上一个表达式树expression tree的案例表达式树的叶子是操作数如常数或者变量名而其他的节点是操作符。由于所有操作符都是二元的-/因此这棵树正好可以被二叉树标识虽然这是最简单情况当还是可以有可能含有多于两个的子节点。一个节点也有可能只有一个儿子如具有一目减运算符的情形。我们将通过递归计算左子树和右子树所得到的的值应用在根处的运算符而计算出表达式书T的值。在本案例中左子树的值是无需计算只有一个节点1 右子树的值23-45因此整个表达式是12*3-45我们通过递归经过左节点中节点右节点的顺序打印表达式这种遍历方式叫中序遍历另外一种遍历策略递归打印左节点右节点中节点输出为123*4-5这种输出策略称为后顺遍历第三种遍历策略是先打印运算符**中节点然后递归打印左子树右子树**得到的结果1±*2345 这种遍历方式叫前序遍历 构造表达式树 我们先给出一种算法将后缀表达式转表达式树。我们已经有了将中缀表达式转后缀表达式的算法见上一篇因此我们能够从这两常见类型的输入生成表达式树。这里所描述的方法和后缀求职算法相似上一篇流程如下 我们遍历表达式如果是符合操作数数字就建立一个单节点树并推入栈如果没有符合是操作符运算符那么将栈中弹出两个树T1T2T1先出栈将运算符T1T2 组成一个新的数改树根节点是操作符右节点是T1 左节点是T2,将新数重新压入栈 还是按上面的案例1 2 3 * 4 - 5 动图展示整个数构造过程 代码实现 /*** 后缀表达式 转表达式树** author liaojiamin* Date:Created in 15:25 2020/12/11*/ public class PostfixExTOTreeEx {public static BinaryNode toTreeEx(String postfixEx) {MyStackObject number new MyStack();String[] chars postfixEx.split( );for (String s : chars) {if (s.matches(([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9]))) {//数字number.push(s);}else if (s.matches((\\*)|(\\/)|(\\)|(\\-))) {if (number.size() 2) {return null;}BinaryNode binaryRight null;Object right number.pop();if(right instanceof BinaryNode){binaryRight (BinaryNode) right;}else {binaryRight new BinaryNode(right, null, null);}BinaryNode binaryLeft null;Object left number.pop();if(left instanceof BinaryNode){binaryLeft (BinaryNode) left;}else {binaryLeft new BinaryNode(left, null, null);}number.push(new BinaryNode(s, binaryLeft, binaryRight));}}return (BinaryNode) number.pop();}/*** 中序遍历* author: liaojiamin* date: 18:15 2020/12/11*/public static void printMiddleFirstTree(BinaryNode binaryNode){if(binaryNode null || binaryNode.getElement() null){return;}printMiddleFirstTree(binaryNode.getLeft());System.out.print(binaryNode.getElement());printMiddleFirstTree(binaryNode.getRight());}/*** 前序遍历* author: liaojiamin* date: 18:15 2020/12/11*/public static void printLeftFirstTree(BinaryNode binaryNode){if(binaryNode null || binaryNode.getElement() null){return;}System.out.print(binaryNode.getElement());printLeftFirstTree(binaryNode.getLeft());printLeftFirstTree(binaryNode.getRight());}/*** 后序遍历* author: liaojiamin* date: 18:15 2020/12/11*/public static void printRightFirstTree(BinaryNode binaryNode){if(binaryNode null || binaryNode.getElement() null){return;}printRightFirstTree(binaryNode.getLeft());printRightFirstTree(binaryNode.getRight());System.out.print(binaryNode.getElement());}public static void main(String[] args) {BinaryNode binaryNode toTreeEx(1 2 3 * 4 - 5 );printMiddleFirstTree(binaryNode);System.out.println();printLeftFirstTree(binaryNode);System.out.println();printRightFirstTree(binaryNode);}}上一篇数据结构与算法–链表实现以及应用 下一篇数据结构与算法–重建二叉树
http://wiki.neutronadmin.com/news/76924/

相关文章:

  • diango做的网站怎么用境外电商平台排行榜
  • 地方生活门户网站建设方案wordpress google 地图插件
  • 科技网站设计公司排名没有任何收录的网站做SEM有用吗
  • 莱州一中网站wordpress管理后台添加导航栏
  • 十堰建设银行官方网站展示型企业网站有哪些举例
  • 网站建设要花多少钱衡水网站建设公司联系电话
  • 陕西省住房城乡建设厅网站管理中心潍坊潍微贷是哪家网站建设的
  • 城市建设网站设计搜索引擎推广的简称
  • 您与此网站之间建立的连接不安全随州制作网站
  • asp做的网站如何更新工作总结怎么写
  • 如何建立内部网站网站架构设计招聘
  • 苏州制作网站的有几家网站上放个域名查询
  • 不做网站做百家号html模板网页
  • 区块链技术网站开发网页制作软件培训机构
  • 做私人彩票网站网页制作古诗素材
  • 林业网站建设方案临沭县哪里有建网站的
  • 网络课程网站模板xampp上安装wordpress
  • 网站开发 确认函网站登陆界面怎么做
  • 新开传奇网站999深圳建筑
  • 如何把国外的网站在国内做镜像江苏电力建设网站
  • 玉林网站建设培训100个详情页设计图
  • 杭州北京网站建设清远市专业网站制作
  • 请别人做网站有风险吗大连高新园区地图
  • 深圳建站的公司专业建设汇报ppt
  • 建设网站所需资料安装网站模版视频教程
  • 这2个代码 找做网站的 安装一下余姚网站推广策划案
  • 民权做网站的公司临沂网站制作公司6
  • 兰州网站建设q.479185700棒安装wordpress登录时的域名是什么
  • 有关建筑的网站重庆网站建设接重庆零臻科技
  • 用c做网站家具全屋定制