【每日一道算法题】

NO.1

下列数据结构中,按先进后出原则组织数据的是?

A.线性链表

B.循环链表

C.栈

D.顺序表



答案:这道题没什么好说的,答案是C.




NO.2

下面关于线性表的叙述中,错误的是哪一个?()


A.线性表采用顺序存储,必须占用一片连续的存储单元。

B.线性表采用顺序存储,便于进行插入和删除操作

C.线性表采用链接存储,不必占用一片连续的存储单元。

D.线性表采用链接存储,便于插入和删除操作。


答案:


线性表是链式存储结构,便于插入和删除,顺序表是顺序存储结构的线性表,便于随机存取线性表既可以是顺序存储,也可以是链式存储。顺序存储时便于随机存取,需要连续的地址空间;链式存储时便于插入和删除,不需要连续的地址空间。


顺序表与线性表的概念:


  线性表是逻辑概念,只要所有的数据在逻辑上是一维的都可以认为是线性表。线性表包括顺序表(栈,队列等),链表(栈,队列等)。跟线性表相对的概念应该是树或者堆。

  顺序表是空间概念,指的是所有的数据在存储空间上顺序排列,而跟具体的操作方式无关。与顺序表相对的概念只有链表。

  顺序表是采用顺序存储结构存储的线性表——随机存储

  线性表是链式存储结构,用链表实现,使用空间多,且合理。

  顺序表基本上是用数组实现的,使用空间有限,会造成浪费,随机存取结构,主要是进行查找,很少做插入和删除操作时顺序表。




NO.3

699个结点的完全二叉树,有叶子节点多少个?


A.350

B.699

C.1398

D.以上都不对


答案:这种题有一个小窍门:

若节点数是奇数,则只有度为2的n2和度为0的叶子n0,n0=n2+1;
若节点数是偶数,则只有度为2的n2,度为0的叶子n0和度为1的节点n1,n1=1,n0=n2+1
;在本题目敏感词699个节点,因为是完全二叉树,2^10-1>699>2^9-1,所以高度为10,可以确定1到9层全满,节点总算为511,剩下的188个肯定为叶子节点!第10层上的188个节点挂在第九层的188/2=94个节点上,则第九层剩下的2^(9-1)-94=162个也为叶子节点,最后总共188+162=350个叶子节点!所以我们不难得出答案为A.



NO.4

已知二叉树后序遍历序列是DABEC,中序遍历序列是DEBAC,它的前序遍历序列是()

A.CEDBA

B.ACBED

C.DECBA

D.DEABC



答案:


这种求前序后序中序遍历序列的问题大致的我们可以分为如下的解题步骤:


第一步:还是先求root根节点,根据后序遍历规则我们可知root为后序遍历序列的最后一个节点,因此该二叉树的root节点为C。

第二步:求root的左子树和右子树,这点我们还是从中序遍历序列中找出,位于root节点C左侧的DEBA为root的左子树,位于E的右子树为空。

第三步:求root的左孩子leftchild和右孩子rightchild,leftchild为左子树的根节点,rightchild为右子树的根节 点。我们可以找到左子树DEBA在后序遍历序列中的排列顺序为DABE,由于后序遍历最后访问根节点,所以E为左子树的根节点,即E为root的 leftchild;


第四步:我们可以根据上面的步骤找到E的左子树和右子树,然后分别求出左右子树的根节点。以此类推,只要求出根节点及其leftchild和rightchild,剩下的过程都是递归的,最后我们就可以还原整个二叉树。
所以很简单这道题选择A。





share a beautiful song with you guys,have a nice day,see u tomorrow~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值