数据结构与算法基础 模块二

别说谁变了你拦得住时间么 提交于 2020-03-13 07:34:38

那么在上一次的分享中,针对链表和顺序表进行了比较,也对于他们二者进行了基础性的分析和说明,那么在模块二中,紧接着上一次的分享,说明一下栈,队列和树的相关知识。

  栈

   栈的关键主要是记住:先进后出   (可以形象的比喻为洗盘子,先洗的盘子放在最下面,放的时候一个一个放,最先洗完的最后放进碗橱)

   并且我们需要明确,栈只是一个逻辑上的概念,并非是实际存在的,并且,出栈的顺序是灵活的,并不是固定的一定是按照进来的顺序走,有可能是进一个出一个,也有可能是全部进来再出,所以,我们要明确不能死记栈的概念,而是要灵活的运用。

   队列

   队列的关键是:先进先出 (可以形象的比喻成在银行排队取钱,先进去的人排在队伍的前面,完成取钱任务后,先出门)

   队列和栈两者有一个很明显的区别,就是出的顺序,所以在记忆的时候,我们可以组合在一起记忆,并且将他们各自都形象的记忆,这样有利于我们区分两者之间的关系,也有利于我们记忆。

  那么,队列中还包括循环队列 :在判断循环队列空的条件:head=tail 这个式子也可以表示队满的情况, 但也有这种可能,就是他的尾指针并没有和他的头指针存在一个地址里,为了区分开来,头地址和尾地址之间还存在一个地址,即其队满的条件是:tail+1=head

   树

  首先,我们在说明树的一些问题的时候,我们需要明确有关于树的相关基本概念:

  1、节点的度 (就看与下一层与几个结点相关联)

  2、树的度 (所有节点中度最高的)

  3、叶子节点 (度为0的结点)

  4、分支结点 (除叶子结点以外其余的结点)

  5、内部结点 (分支结点除根节点外的结点)

  6、父节点

  7、子结点            (父节点,子节点,兄弟结点都是相对的量和概念,都是一个结点相对另一个结点而言的)

  8、兄弟节点 

    树的遍历

   前序遍历: 先访问根节点,再访问叶子结点

   后序遍历:先访问子结点,再访问根节点

   层次遍历:一层一层的访问

      那么,我们需要明白,每一次访问子结点的时候,都必须从左开始,先访问左子结点,再去访问右子结点

 二叉树

   在说有关二叉树的相关内容的时候,我们必须要区分开一个问题。就是二叉树他并不是一个特殊的树,而是一个独立的数据结构,并且,二叉树最多只能有两个子结点结点,左子结点和右子结点。

   二叉树可分为:满二叉树,完全二叉树和非完全二叉树

   明确二叉树的相关概念后我们来看一下二叉树的重要的特性:

  1、在二叉树的第i层上最多有2的i-1次个结点 (i>=1);

  2、深度为k的二叉树最多有2的k-1次个结点 (k>=1);

 3、对任何一颗二叉树,如果其叶子结点树为n0,度为2的结点数为n2,则n0=n2+1;

    注: 若一个完全二叉树有n层,则其n-1层就是满二叉树,最后一层排列也必须是从左至右排列 。 这个同时也是构成完全二叉树的条件。

4、如果对于一颗有n个结点的完全二叉树的结点按层编号(从第一层到 log2n向下取整+1 层 ,每层都是从左到右),则对于任意结点i(1<=i<=n),有:

    ① 如果 2i>n,则结点i为叶子结点,无左子结点,否则右子结点是结点2i。

    ②如果2i+1>n,则结点i无右子结点,左子结点是2i+1;

  二叉树的遍历

  二叉树的遍历与树的遍历相同,但是多了一个中序遍历。其余三种遍历的条件和方向都一样,

   中序遍历:先访问左子结点,再访问根节点,最后访问右子结点。

  既然说了树和二叉树各自的内容,那么我们来看一下,树和二叉树之间是怎么转换的

   树和二叉树之间的转换需要符合以下的规则:一棵树若要转换成等价的二叉树,对于任何一个结点,树的孩子结点作为它转换成二叉树中的左子树结点,树的兄弟结点全部变成新转换之后的右子树结点。

  那么我们需要注意的是,在数转换成二叉树之后,他同样需要有遍历的操作,那么,在树正确转换之后, 

    1、两者的前序遍历相同

    2、树的后序遍历是二叉树的中序遍历

  查找二叉树

  查找二叉树又叫做二叉排序树,即一个查找二叉树要么是一颗空树,要么是满足以下递归条件:

 ①:查找树的左,右树各是一颗查找树

 ②:若查找二叉树的左子树排空,则其左子树的各结点值均小于根结点的值

 ③:若查找树的右子树排空,则其右子树的各结点值均大于根节点值。

   以上均为今天的分享,因为时间和分值的分布,只能系统的阐述一下各关系和内涵,所以,如果要有一个深层次的认识和了解的话,还是需要下面自己在多加找相关的练习题进行操作联系,加强自己的熟练程度的记忆。

 

  

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!