- 博客(11)
- 收藏
- 关注
原创 【无标题】
https://blog.csdn.net/m0_47256162/article/details/128438944?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167759252216800184149640%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167759252216800184149640&biz_id=0&utm_med
2023-02-28 22:05:17 275 1
原创 线索二叉树
通过对二叉树的约定遍历方式 可以得到一个固定的遍历方式 存放前驱和后继的空间 每隔一个结点都有浪费空间 所以我们就将它利用存前驱和后继 yes 中序遍历具备这样的特点 将已经定义好的结构进行扩容 ltag 与 rtag ltag=0 指向左孩子 =1 指向前驱 ...
2020-10-21 23:37:57 213
原创 二叉树遍历非递归
前序遍历 先结点再左右子树 使用栈的方式 输出结点(中) 压入栈中 左子树 右子树 遇到非空结点不停的压栈 若遇到空结点 指针指向栈顶元素的右结点 则栈顶元素弹出 继续 利用了栈先进后出的特点 每一次遇到空结点 我们首先要向上找它的父结点就是栈顶 //前序遍历非递归 void PreOderN(btlink T) { stack<btlink>st; while(T!=NULL||!st.empty())//循环结束条件 结点不为空 栈不为空 { if(T!=NULL
2020-10-18 11:11:24 111
原创 二叉树的遍历(递归)
//以二叉树结点T作为访问对象 void PreOder(btlink T)//前序 { if(T) { vist(T);//对结点数据的操作 愿意咋地就咋地 PreOder(T->left); PreOder(T->right); } } 中序 void InOder(btlink T) { if(T) { InOder(T->left); vist(T); InOder(T->right); }
2020-10-15 17:23:35 79
原创 二叉树的建立(指针)
二叉树的建立 建立结点 typedef struct btnode *btlink; typedef struct btnode { int data; btlink left; btlink right; }Btnode; 创建结点 btlink NewNode() { btlink m=new btnode;//很重要 开辟btnode大小的空间不是指针 return m; } 创建树 typedef struct Binarytree *btree; typedef struct Bin
2020-10-15 17:18:10 1064
原创 快速排序的优化
优化选取基准点 优化基准点 使其不达到极端状态 或者说 使其用基准点划分想对平衡 找下标最左边 中间 以及最右边的值 取三者的中间值作为基准点 这称为三数取中 只需要改变 get_mid() 函数 int get_mid(int a[],int left,int right) { int mid=left+(right-left)/2; if(a[left]>a[right]) { swap(a[left],a[right]); } if(a[mid]>a[right])
2020-10-11 17:07:46 76
原创 快速排序
快速排序 第一步先进行划分 选取基数pivot 第二步左边快排 第三步右边快排 关键 在于get_mid()也就是基数划分函数、 选取最左边为基数 此后二三步进行递归求解 int get_mid(int a[],int left,int right) { int pivot=a[left]; while(left<right) { while(a[right]>=pivot&&left<right) { right--; } a[left]=
2020-10-11 15:55:21 67
原创 归并排序(递归与迭代)
归并排序 采用分而治之的思想 采用递归 分成小部分 (对半分) 治:将正确答案对在一起 图片网上找的 void mergesort(int a[],int n)==递归分== { if(n>1) { int *list1=a; int list1_size=n/2; int *list2=a+n/2; int list2_size=n-list1_size; mergesort(list1,list1_size);==左半部分== merge
2020-10-11 13:05:03 183
原创 算法与数据结构实验题 3.9 文档
算法与数据结构实验题 3.9 文档 题解 撤销:撤销最近的一次的恢复和输入 恢复:恢复最近一次的撤销 但输入之前的撤销不可以 输入 建立栈word 输入和恢复//用数组建立的原因是要输出 建立栈del被撤销的输入在这里 ...
2020-10-08 18:12:09 146
原创 c++栈
c++栈库 t头文件#include 使用方法: stackstackname; 如 stacks; s.empty();//如果栈为空则返回true; s.size();//栈中元素个数 s.top();//返回栈顶元素但不删除 s.pop();//弹出栈顶元素但不返回值 s.push();//将元素压入栈顶 ...
2020-10-08 16:16:59 111
原创 brachets
问题求解: 求最长括号子序列 思路: 左括号入栈 遇到右括号出栈 借助辅助数组定义一个与字符串长度相同得数组初始化为零 #include<bits/stdc++.h> using namespace std; int flag[100005]; char s[100005]; stack<int>astack; int main() { int len=0;int max=0; int count=0; int n; int i,j; cin>>s; n.
2020-10-08 16:08:20 109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人