前序

前序
vector<int> preorder_search(TreeNode* root)
{
	if (root == NULL) return res;
	TreeNod *node = root;
	stack<TreeNode*> s;
	while(node!=nullptr||!s.empty())
	{
		while(node!=nullptr)
		{
			/* operation of node */
			s.push(node);
			node = node->left;
		}
		if(!s.empty())
		{
			p = s.top();
			s.pop();
			node = node->right;
		}
	}
}
中序
vector<int> middle_search(TreeNode* root)
{
	if (root == NULL) return res;
	TreeNod *node = root, *pre_visited = nullptr;
	stack<TreeNode*> s;
	while(node!=nullptr||!s.empty())
	{
		while(node!=nullptr)
		{
			s.push(node);
			node = node->left;
		}
		node = s.top();
		if(node->right==nullptr||node->right==pre_visited)
		{
			/* operation of node */
			s.pop();
			pre_visited = node;
			node = nullptr;
		}
		else
		{
			node = node->right;
		}
	}
}

冒泡
void Bubblesort(vector<int> &num)
{
    if(num.empty())
        return;
    for(int i=0; i<num.size()-1; i++)
    {
        bool flag = true;
        for(int j=0; j<num.size()-i; j++)
            if(num[j]>num[j+1])
            {
                flag = false;
                swap(num[j], num[j+1]);
            }
        if(flag)
            break;
    }
}
快排
void QuickSort(vector<int> &num, int start, int end)
{
    if(num.size()<=1||end<=start)
		return;
    int base = start;
    int left = base, right = end;
    while(left<right)
    {
        /* 选最左元素为基准,要从右边开始 */
        while(left<right&&num[right]>=num[base])
            right--;
        while(left<right&&num[left]<=num[base])
            left++;
        if(left==right)
        {
            swap(num[base], num[left]);
        }
        else
        {
            swap(num[left], num[right]);
        }
    }
    QuickSort(num, start, left-1);
    QuickSort(num, left+1, end);
}
直插
void InsertSort(vector<int> &num)
{
	if(num.empty())
		return;
	for(int i=1; i<num.size(); i++)
	{
		int j = i;
		while(j>0&&num[j]<num[j-1])
		{
			swap(num[j], num[j-1]);
			j--;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值