数据结构/算法
文章平均质量分 72
A_YT
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
七种排序算法及其复杂度
1.冒泡排序 时间复杂度:O(N^2) 思想:从后往前开始,相邻的两两进行比较,将小的逐渐移到前面。(也可以从前往后开始两两相邻的进行比较) 代码: void BubbleSort(int *a, int N) { if (a == NULL || N <= 0) return ; int i, j; for (i = 0; i < N; i++) { for (j原创 2017-03-28 20:40:04 · 2050 阅读 · 0 评论 -
堆相关操作
#include using namespace std; void swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } /* 1.结点i的左右子节点下标分别为2i+1,2i+2 2.结点i的父结点下标为(i-1)/2 3.一颗完全二叉树的最后一个拥有子结点的结点下标为(n/2 - 1),n为结点数 */ //下滤操作原创 2017-03-28 22:07:13 · 496 阅读 · 0 评论 -
判断一棵树为另一颗树的子树
题目: 有两颗二叉树,判断其中一颗A是否是另一颗B的子树。 解决思想: 按先序遍历树B的每个结点,判断结点是否和树A的根结点相同。若相同,再判断以该结点为根结点的树是否有和树A相同的子树。 代码: #include using namespace std; struct BTree { int m_val; BTree *m_lchild; BT原创 2017-03-16 17:02:10 · 1788 阅读 · 0 评论 -
树的镜向
问题: 求一颗树的镜向 解决思路: 镜向其实就是将所有结点的左右两个子结点交换就行。所以可以遍历二叉树,遍历到一个结点时,交换其左右两个子结点。 代码: 递归版本 void Mirro(BTree *T) { if (T == NULL || (T->left == NULL && T->right == NULL)) return ; BT原创 2017-03-16 17:39:39 · 491 阅读 · 0 评论
分享