数据结构学习总结(三)

9.什么是二叉树?什么是满二叉树?什么是完全二叉树?什么是二叉排序树?什么是平衡二叉树?

 

二叉树:一种特殊的树形结构特点是每个节点至多只有两课子树,并且子树有左右之分,次序不能颠倒。

满二叉树:指树中的每一层都含有最多的结点的二叉树。

完全二叉树:深度为h的,有n个结点的二叉树,当且仅当其每一个结点都与深度为h的满二叉树中编号从1至n的结点一一对应时,称为完全二叉树。

二叉排序树:指一棵二叉树或者是空二叉树,具有如下性质:左子树上所有结点的关键字均小于根节点关键字;右子树上所有结点的关键字均大于根节点的关键字,左右子树又各是一棵二叉排序树。

平衡二叉树:树上任一结点的左子树和右子树的高度之差不超过1

 

10.常用的二叉树遍历算法有哪些?他们的算法思想分别是什么?

 

常用的二叉树遍历算法有:前序遍历、中序遍历、后续比那里,以及层次遍历。

前序遍历:先访问根节点,然后前序遍历左子树,最后前序遍历右子树;

中序遍历:中序遍历左子树,访问根节点,最后中序遍历右子树;

后序遍历:后序遍历左子树,后序遍历右子树,访问根节点;

上面的算法思想可以用递归算法实现,在用非递归算法实现时,需要借助栈。

层次遍历:对二叉树的各个节点逐层访问,需要借助一个队列,先将而常数的根节点入队,然后出队,访问该结点,如果它有左子树,则将左子树根节点入队列;如果它有右子树,则将右子树根节点入队列。然后出队,对出队节点访问,反复进行,直到队列为空。

 

11.通过哪些遍历的组合能唯一确定一棵二叉树?为什么?

 

中序序列和前序或后序序列中任一组合能唯一确定一棵二叉树,而已知前序和后序的组合不能唯一确定。确定二叉树,要分别找到根节点和左右子树。因此,根据遍历结果,必定要确定根节点的位置和如何划分子树,才可以最终唯一确定一棵二叉树,仅有前序和或许遍历序列不能唯一确定,因为无法划分左右子树,而其中任何一个加上中序序列都可以唯一确定一棵二叉树。

 

12.什么是逆波兰表达式,其求值的算法思想是什么?

 

逆波兰表达式也就是后缀表达式,逆波兰表达式求值即计算,也是从左往右依次读取,如果是操作数则入栈,当读到操作符时,将之前的两个操作数依次出栈进行计算,再讲结果入栈,接着读取,重复此步骤。

 

13.具有n个结点的AVL树的高度是多少?其检索、插入、删除的时间复杂度分别是多少?

 

这个问题可以反推出来,一个高度为H的平衡二叉树至少有多少个结点?实际上是用斐波那契数列推出来的:1,2,4,7,11,即F(n) = F(n-1) + F(n-2),由此可以反推出来。

平衡二叉树检索取决于其高度即O(logn),插入分为两步,第一步找插入点,时间复杂度为O(logn),第二步找到需要调整的子树进行最多两次调整,时间复杂度也为O(logn),因而它的插入操作的时间复杂度为O(logn);删除的时间和插入一样,因此,平衡二叉书的检索、插入、删除的时间复杂度均为O(logn)。增加和删除可能需要通过一次或多次旋转来重新平衡这个数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值