数据结构及算法
hduzhouli
这个作者很懒,什么都没留下…
展开
-
由先序遍历/后序遍历以及中序遍历重构二叉树
我们知道在二叉树的遍历中,如果知道了二叉树的先序遍历顺序和中序遍历顺序,或者后序遍历顺序和中序遍历顺序,都可以唯一确定一棵二叉树,而不知道中序遍历顺序,只知道前序遍历的和后序遍历的顺序,是不能唯一确定一棵二叉树的。例如,我们如果知道一棵二叉树的前序遍历顺序为“a d b g c e f h”,后序遍历为"g b d e h f c a",则我们可以得到如下的两棵二叉树(可能还有其他类型的二叉树)原创 2014-11-27 16:18:10 · 818 阅读 · 0 评论 -
求最大公约数和最小公倍数(递归算法及非递归算法)
最近做题目发现一些题目需要求数的最大公约数和最小公倍数,想想最大公约数和最小公倍数平时做数学的时候感觉不是很难,但是突然要编程来实现,却一下子不知所措了,后来看了下别人写的,发现其实也不算特别难。最小公倍数其实只要一个公式,即整数A和整数B的最小公倍数为A*B/gcd(A,B)(gcd(A,B)为A和B的最大公约数),可见A和B的最小公倍数就为A和B的乘积再除以它俩的最大公约数,也就是说最终还是要原创 2014-11-25 19:59:01 · 11060 阅读 · 0 评论 -
二叉树前/中/后序遍历非递归实现(用栈实现)LeetCode Binary Tree Traversal
在数据结构中,二叉树是常用的一种数据结构,而对二叉树进行遍历也是这种很常用的操作,遍历二叉树是我们可以使用递归的方法,代码很简单,但是每次调用递归函数都会都系统消耗比较大,下面介绍一下用栈的方法实现二叉树的遍历,例子为LeetCode里面的题目。首先是LeetCode中已经定义好的二叉树结点/** * Definition for binary tree * struct TreeNo原创 2015-04-02 16:28:32 · 703 阅读 · 0 评论 -
快速排序代码
快速排序代码,同上一篇堆排序,更喜欢简洁代码,适合IT公司笔试面试用。int partition(int a[], int low, int high){ int key = a[low]; while(low < high){ while( low < high && key <= a[high] ) high--; a[low] = a[high]; while(原创 2015-09-01 20:35:38 · 845 阅读 · 0 评论 -
堆排序代码
堆排序代码,比较喜欢简洁的代码,发现网上找到的堆排序代码太冗长了,现在整理一下,适合IT公司笔试面试用。void swap(int& a, int& b){ a = a ^ b; b = a ^ b; a = a ^ b;}void HeapAdjust(int arr[],int root, int size){ while(2 * root + 1 < size){原创 2015-09-01 20:32:10 · 487 阅读 · 0 评论