Day11 二叉树 算法

 

我就是不写注释的🐕

1.
#ifndef HHHHH
#define HHHHH
#include<myhead.h>
typedef char datatype;
typedef struct Nood
{
	datatype data;
	struct Nood*L;
	struct Nood*R;
}Node,*NodePtr;

NodePtr free_creat();

void num_1(NodePtr F);

void num_2(NodePtr F);

void num_3(NodePtr F);

#endif
2.
#include"ceshi3.h"

NodePtr free_creat()
{
	char pos=0;
	scanf("%c",&pos);
	getchar();
	if(pos=='#')
	{
		return NULL;
	}
	NodePtr F=(NodePtr)malloc(sizeof(Node));
	F->data=pos;
	F->L=free_creat();
	F->R=free_creat();
	return F;
}


void num_1(NodePtr F)
{
	if(F==NULL)
	{
		return;
	}
	printf("%c\t",F->data);

 num_1(F->L);

	num_1(F->R);
	
}

void num_2(NodePtr F)
{
	if(F==NULL)
	{
		return;
	}

 num_1(F->L);
		printf("%c\t",F->data);
	num_1(F->R);

}

void num_3(NodePtr F)
{
	if(F==NULL)
	{
		return;
	}

 num_1(F->L);

	num_1(F->R);
		printf("%c\t",F->data);
}
3.
#include "ceshi3.h"
int main(int argc, const char *argv[])
{
	NodePtr F= free_creat();
	if(F!=NULL)
	{
		printf("成功\n");
	}
		num_1(F);
		putchar(10);
		num_2(F);
		putchar(10);
		num_3(F);
		putchar(10);

	return 0;
}

数据
#include <myhead.h>

/*void num_1(int *arr,int pos)
{
	for(int i=1;i<pos;i++)
	{
		int a=0;
		for(int j=0;j<pos-i;j++)
		{
			if(arr[j]>arr[j+1])
			{
				a=1;
				int temp=arr[j+1];
				arr[j+1]=arr[j];
				arr[j]=temp;
			}
		}
		if(a==0)
		{
			break;
		}
	}
	printf("排序成功\n");
}
void num_3(int*arr,int pos)
{
	int max=0;
	for(int i=0;i<pos;i++)
	{
		int max=i;
			for(int j=i+1;j<pos;j++)
			{
				if(arr[j]<arr[max])
				{
				max=j;
				}
			}
			if(arr[max]!=arr[i])
			{
			int temp=arr[max];
			arr[max]=arr[i];
			arr[i]=temp;
			}
	}
}*/
void num_4(int *arr,int pos)
{
	int i,j;
	for(i=1;i<pos;i++)
	{	
		int temp=arr[i];
			for(j=i-1;temp<arr[j]&&j>=0;j--)
			{
				arr[j+1]=arr[j];
			}
		arr[j+1]=temp;
	}
}	
void num_2(int *arr,int pos)
{
	for(int i=0;i<pos;i++)
	{
		printf("%d\t",arr[i]);
	}
}
int part(int *arr,int low,int hight)
{
	int X=arr[low];
	while(low<hight)
	{
		while(arr[hight]>=X&&low<hight)
		{
			hight--;
		}
		arr[low]=arr[hight];
		while(arr[low]<=X&&low<hight)
		{
			low++;
		}
		arr[hight]=arr[low];
	}
	arr[low]=X;
	return low;
}
void paint(int *arr,int low,int hight)
{
	if(low>=hight)
	{
		return;
	}
			int X=part(arr,low,hight);
			paint(arr,low,X-1);
			paint(arr,X+1,hight);
}
int main(int argc, const char *argv[])
{
	int	arr[]={8,4,6,0,1,5,7,1};
		int pos=sizeof(arr)/sizeof(arr[0]);
		num_4(arr,pos);
		printf("\n");
	num_2(arr,pos);
	printf("\n");
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值