美文网首页直通BAT算法与数据结构计算机杂谈每天写1000字
【我的漫漫考研路】数据结构第三章--树的概念和二叉树的遍历

【我的漫漫考研路】数据结构第三章--树的概念和二叉树的遍历

作者: 张照博 | 来源:发表于2017-07-21 13:47 被阅读67次

    正文之前

    在实习的时候学习环境太差了,今天就结束生产实习啦!所以后面可以回去好好看书了!高兴,特地来发篇排过版的文~~~

    正文

    什么是树?

    查找算法:


    静态查找 方法一:顺序查找



    方法二:二分查找--二叉树的由来

    树的具体定义:


    李逵?李鬼!非树也~

    基本术语,下面是我的解读:
    节点的度:节点可以理解为人,这个人跟他老婆生孩子的度,怎么衡量呢?没错,就是儿子个数,用在树上也是可以这么说的!
    树的度:看家族里面谁的儿子最多就代表家族的度咯!


    路径,没错,路径就是连线,至于多长,自己数~
    评测一个家族的深度是看这个家族谁的儿子最多吗?不是!是看这个家族传承多少代了~

    二叉树~


    错题解读:
    顺序查找:1只需要一次;
    二分查找:
    12/2 ----1
    6/2 ----2
    3/2----3

    总共只需要四步!!!!不是五步!!!
    其他3 需要五步, 6需要七步 2貌似二分查找找不到!

    N0表示没有儿子的节点,n2表示有两个儿子的节点,对于深度为3的二叉树,有n0 n1 n2三个节点分量,那么,我们可以考虑到,其节点总数可通过两种方式获取:

    1. 所有的节点数相加:n=n0+n1+n2

    2. 通过计算某一节点的子节点数相加来获得总节点数:
      a) 其中n0表示叶节点,所以没有子节点;
      b) N1表示有一个子节点,那么可以得到独生子的个数:n11;
      c) N2表示有两个子节点,那么可以的到同父子节点的个数:n2
      2;
      d) 根节点不属于任何人的儿子,所以还要加个根节点数:1;
      所以通过这种方式获得总结点数:n=n00+n11+n2*2+1;
      两者联立。没法求解,但是可以的得出一个关系式:

    前序遍历结果:

    中序遍历:

    后序遍历的观察方法很简单:先看一根主干,然后把叶子节点从左到右,一次拨开一层,然后输出就好了。

    访问路径其实都是一样的(每个节点都可以被碰到三次),但是输出本节点的数据的时间不同,第一次遇到就输出的是先序,第二次是中序,第三次是后序!!
    第一次遇到是从父节点直接通过指针搜索过来被指向,然后它本身有一个指向左指针,一个指向右指针,从左指针上的节点(不论其存在与都会进行一次递归)回来访问它本身一次,从右指针上的节点(不论其存在与都会进行一次递归)回来访问它本身一次。合共三次!

    下面是我自己更加深刻的记忆方法:(儿子冲击法)

    查找路径是一致的,一直往最左边跑。如果跑到头了。那么就是返回爸爸那里,从右边开始继续最左边跑的道路不动摇。如果爸爸只有一个自己这么一个独生子,那么就跑到爷爷那里。

    儿子冲击法判定输出顺序:前序只要碰到了就直接输出,中序的话,要被儿子冲击一次,哪怕这个儿子并不存在你也要认为存在(淫荡点的你可以认为是你的半个儿子~嘿嘿嘿,那啥恩。你懂得,但是你孙子就不存在吧!)。所以如图所示,蓝色箭头代表儿子冲击的次数。中序遍历是儿砸冲击一次。后序是儿砸冲击两次。

    非递归就是迭代,执行效率会大大提升!利用指针不断地取下一个节点,直到指针指向空NULL 那么久就可以跳出循环,进入下一个判断条件进行输出~

    层序遍历比较好,用队列,有始有终,先进先出。具象化为:
    一个人A去排队,然后顺手把自己的儿子B C放在自己身后,然后儿子B又招呼自己的儿子 D E来排队,C也招呼自己的儿子F来排队,这样,最后买到东西的次序就一直从爷爷排到了孙子。完全遵照年纪来排~~ 画个图吧 ~~

    正文之后

    为了排这篇文#正文之前
    在实习的时候学习环境太差了,今天就结束生产实习啦!所以后面可以回去好好看书了!高兴,特地来发篇排过版的文~~~

    不开空调的大厅,这个剪刀手我是多无奈才摆出来?

    相关文章

      网友评论

        本文标题:【我的漫漫考研路】数据结构第三章--树的概念和二叉树的遍历

        本文链接:https://www.haomeiwen.com/subject/qpqqkxtx.html