- 博客(3)
- 资源 (5)
- 收藏
- 关注
原创 二叉树遍历算法的改进(非递归实现)
二叉树遍历算法的改进 二叉树的深度优先遍历算法都是用递归函数实现的,这是很低效的,原因在于系统帮你调用了一个栈并做了诸如保护现场和恢复现场等复杂的操作,才使得遍历可以用非常简洁的代码实现。二叉树深度优先遍历算法的非递归实现用用户定义的栈来代替系统栈,也就是用非递归的方式来实现遍历算法,可以得到不小的效率提升。 二叉树深度优先遍历算法的非递归实现 (1)先序遍历非递归算法 要写出其遍历的非递归算法,其主要任务是用自己定义的栈来代替系统栈的功能。 以图1所示的二叉树为例,过程为图二所示 初态栈空 结点1入
2020-08-23 11:39:45
574
原创 二叉树遍历算法(递归实现+层次遍历)
二叉树遍历算法 二叉树的存储结构 typedef struct BTNode { char data; //这里默认结点data为char型 struct BTNode *lchild; struct BTNode *rchild; }BTNode; 二叉树的遍历算法 1 先序遍历 先序遍历的操作如下。 如果二叉树为空树,则什么都不做;否则: 1)访问根节点 2)先序遍历左子树 3)先序遍历右子树 描述如下: void preorder(BTNode *p) { if(p
2020-08-23 11:38:58
4065
1
原创 KMP算法及其改进算法(随笔)
字符储存在1~length的位置上 简单模式匹配 思路:从主串的第一个位置起和模式串的第一个字符开始比较,如果相等,则继续逐一比较后续字符;否则从主串的第二个字符开始,再重新用上一步的方法与模式串中的字符做比较,以此类推,直到比较完模式串中的所有字符。若匹配成功,则返回模式串在主串中的位置;若匹配不成功,则返回一个可区别于主串所有位置的标记,如“0”。 int index(Str str,Str substr){ int i=1,j=1,k=1;//串从数组下标1位置开始存储,初值为1 wh
2020-08-06 22:07:09
1171
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人