数据结构部分考点整理
来源:互联网 发布:手机qq java 编辑:程序博客网 时间:2024/06/15 17:10
1.逻辑结构与物理结构
- 逻辑结构:数据元素之间的逻辑关系称为数据的逻辑结构。例如集合结构,线性结构,树状结构和网络结构。(堆,栈似乎同属于线性结构)
- 物理结构(存储结构):数据结构在计算机中的表示。例如顺序存储,链式存储,索引存储,散列存储。
2.顺序存储和链式存储的选择
- 顺序存储和链式存储的选择要根据具体问题来判断。
- 如果对数据的操作涉及较多的插入和删除,应选择链式存储结构。
- 如果对数据的操作涉及较多的访问,应选择顺序存储结构。
3.在用数组表示的循环队列中判断队列是空是满的边界条件
- 解决方法1:在数据结构中增设一个布尔变量来单独储存队列是空还是满。
- 解决方法2:队列中的front和rear有一个不储存具体数据。例如front为空,front+1为第一个数据,rear代表最后一个数据。这样空的条件设定为
front ==rear;
,把满的条件设定为(rear+1)%maxSize==front;
。这样就很好的区别了空与满。
4.拓扑排序算法复杂度
- 对于一个n个节点,e条边的图,算法复杂度为O(n+e)
5.完全二叉树的节点公式
- 对于一个完全二叉树,如果对节点从1开始计数,如果一个节点编号为i,那么它的左孩子为2i,右孩子为2i+1。
6.树的高度计算公式
- 如果节点数为n,那么树的高度为log2(n)向上取整再减1。
- 需要指出的是在这个公式中,默认空树的高度为-1,在有些教材中空树的高度记为0。
7.哈夫曼树节点计算公式
- 如果哈夫曼树中叶子节点数为n,那么总节点数为2n-1。
8.根据后序遍历和中序遍历结果推测树的形状
- 如果一棵树,其后序遍历为dabec,中序遍历结果为debac,求其前序遍历结果。
- 首先根据后续遍历的性质,知道c为根节点,再由中序遍历的性质知道,deba都在c的左子树中,c的右子树为空。再看c的左子树,在c的左子树中,e又为其根节点,再看中序遍历,知道d在c的左子树的左子树中,ba在c的左子树的右子树中,以此类推,可以得到整棵树。
- 因此前序遍历的结果为cedba。
9.编程问题:寻找两个节点的最近父节点
//寻找二叉树两个结点的最低共同父节点TreeNode *FindFirstCommonParentNode(TreeNode *pRoot, TreeNode *pNodeOne, TreeNode *pNodeTwo){ if (NULL == pRoot) { return NULL; } if (pRoot == pNodeOne || pRoot == pNodeTwo) { return pRoot; } TreeNode *pLeft = FindFirstCommonParentNode(pRoot->m_pLeft, pNodeOne, pNodeTwo); TreeNode *pRight = FindFirstCommonParentNode(pRoot->m_pRight, pNodeOne, pNodeTwo); if (NULL == pLeft) //1、左子树没有找到任何一个结点,则第一个公共父节点必定在右子树,而且找到第一个结点就是最低共同父节点 { return pRight; } else if (NULL == pRight) //2、右子树没有找到任何一个结点,则第一个公共父节点必定在左子树,而且找到第一个结点就是最低共同父节点 { return pLeft; } else //3、分别在结点的左右子树找到,则此节点必为第一个公共父节点 { return pRoot; }}
来自编程之路
10.哈夫曼树
- 叶子结点数是N时,中间节点数为N-1,总结点树为2*N-1
- 问题:已知一个哈夫曼树,允许的最大高度为4。假定已有两个叶子节点被编码为01和10,那么还有最多几个叶子节点?
- 解答:最多还有8个叶子节点。对于一棵任意的哈夫曼树,如果其高度为4,那么它的叶子节点数量最多为2的4次方,就是16个。但是我们已知两个叶子节点的编码为01和10,代表这两个叶子节点的高度只有2,因为哈夫曼树不存在一个编码是另一个编码的前缀,因此在这两个叶子节点之下没有子节点。所以比原来的结果少了(8-2)=6个节点,所以共有10个叶子节点,最多还能在找8个。
11.未完待续
阅读全文
0 0
- 数据结构部分考点整理
- 数据结构部分整理
- 模板整理: 部分数据结构
- 部分noip考点
- 【软件体系结构】考点整理
- 计算机网络考点整理
- 操作系统考点整理
- 2015年考研核心考点命题思路解密——数据结构 第二章 线性表 考点3 线性表的链式存储(选择题部分)
- 2015年考研核心考点命题思路解密——数据结构 第二章 线性表 考点3 线性表的链式存储(综合题部分)
- c/c++易考点整理
- Hive面试题考点-整理
- 软考中操作系统部分考点概要
- 计算机网络部分的面试常考点
- 计算机网络部分的面试常考点
- 计算机网络部分的面试常考点
- 整理GRE数学考试中正态分布考点
- 【软件工程】滨江学院 李振宏 软件工程 考点整理
- 【操作系统】滨江学院 陈遥 期末试卷考点整理
- 快速沃尔什变换学习小记
- 巧用栈结构实现迷宫游戏
- 数据结构-二叉树-建立,输出,计算长度-C++
- 160个练手CrackMe-030
- 11.11考试总结
- 数据结构部分考点整理
- hdoj 1727 Hastiness
- 多线程问题
- OpenMAX编程-数据结构
- [LeetCode]Container With Most Water
- Android短信验证码
- java使用axios.js的post请求后台时无法接收到参数的问题
- spring-cloud中config配置中心使用(基本使用)
- ionic购物车