zoukankan      html  css  js  c++  java
  • 二叉树的学习

    二叉树的划分

    -----------------------------------

    二叉树分为 一般二叉树,满二叉树,完全二叉树。

    一般二叉树就是普通的二叉树。

    满二叉树,是所有节点全部存满的二叉树。

    完全二叉树是在满二叉树的前提下,从右边砍掉一些节点的结果。为什么要有完全二叉树,是因为二叉树需要转换成线性结构储存。

    普通树转换为二叉树

    -----------------------------------

    上面是普通树,下面是转换后的二叉树

    转换遵循: 左子树为它的孩子(childen子节点),右子树为它的兄弟(就是旁边的节点)。

    转换后就是这样,这个转换比较精妙。另外森类型的转换也和这个转换一样。

    二叉树的先序遍历,中序遍历,后序遍历

    -----------------------------------

    先序遍历的规则是:自己-左子树-右子树

    中序遍历:左子树-自己-右子树

    后序遍历是:左子树-右子树-自己

    可以发现,都是按照先序遍历的标准,然后调换顺序。

    以上图为例

    先序遍历:A-B-D-E-C-F-G-H

    中序遍历:D-B-E-A-F-C-G-H

    后序遍历:D-E-B-F-H-G-C-A

    主要还是用递归程序的思路去想,容易理解一些。它是一层一层的

    知道两种遍历结果,求树的形状

    -----------------------------------

    据说面试经常面这个。。不过只是据说。。

    必须是知道先序,中序或者中序,后序的情况下。才能还原二叉树

    为什么?因为只知道一种遍历情况,不知道接下去的情况是左子树遍历完了,已经遍历到右子树了,还是左子树没遍历完。

    而只知道先序,后序的时候,无法分辨谁是最外侧的左子树,和最外侧的右子树。所以不行

    知道先序,中序 求树的形状

    后续和中序,只要知道后续最后一个肯定是最外面的根。以此类推就行了。

  • 相关阅读:
    springmvc结合freemarker,非自定义标签
    springmvc的ModelAndView的简单使用
    tomcat无法正常启动的一个原因
    通过springmvc的RequestMapping的headers属性的使用
    springmvc入门demo
    Redis的入门Demo(java)
    Ubuntu18.0.4查看显示器型号
    APS审核经验+审核资料汇总——计算机科学与技术专业上海德语审核
    Java连接GBase并封装增删改查
    SpringMVC源码阅读:异常解析器
  • 原文地址:https://www.cnblogs.com/hont/p/3059325.html
Copyright © 2011-2022 走看看