当前位置: 首页 > 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://www.sadfv.cn/news/76924/

相关文章:

  • 汕头网站建设推广厂家超炫html5网站模板
  • 自助手机建站系统温州网站建设服务器
  • 织梦cms网站标书制作员有前途吗
  • 公司制作网站怎么做的wordpress 文章 函数
  • 高周波做网站郑州做网站的外包公司有哪些
  • 锦州网站建设资讯北京电商开发公司
  • android wap网站品质好的网站制作
  • 手机网站建设教程视频网络推广方案100例
  • wordpress建企业站教程湛江高端网站开发
  • 上海住房和城乡建设部网站首页地产设计网站
  • 做很多网站ps软件是干什么用的
  • 网站开发fsdpjq江门网站建设推广
  • 网站开发工程师薪资婚纱摄影手机网站模板
  • 许昌市住房和城乡建设局门户网站企业网站seo外包
  • 网站更新了域名如何找到ai网页界面设计
  • html网站开发语言网站 防止采集
  • 免费发布信息的网站长沙给中小企业做网站的公司
  • 网站设计公司网站制作广西哪里有网站建设
  • 网站建设方案设计心得wordpress 查死链接
  • 建设营销型网站多少钱注册公司需要什么材料
  • 学子网站建设成都网站制作建设
  • 网站搭建dns有用吗织梦后台怎么做网站地图
  • 做数据的网站内蒙古建设 招聘信息网站
  • 有哪些做微信小游戏的网站视频号怎么运营
  • 北京网站制作网站汕头怎么进行关键词优化
  • 敦煌网外贸平台搜索引擎优化的步骤
  • 北京网站优化培训建网站找兴田德润
  • 网站做后台网站的费用多少
  • 网站源码下载哪个网站好网页设计与制作课程性质
  • 全国建造师查询网站做网站要注意什么问题