zoukankan      html  css  js  c++  java
  • 左偏树

    </pre><pre name="code" class="cpp">#include<stdio.h>
    #include<stdlib.h>
    typedef struct node
    {
    	int key,dist;
    	struct node *Left,*Right;
    }LeftistTree;
    void Swap(LeftistTree** a,LeftistTree** b)
    {
    	LeftistTree *tmp;
    	tmp = *a;
    	*a = *b;
    	*b = tmp;
    }
    LeftistTree* Merge(LeftistTree *A,LeftistTree *B)
    {
    	if(A == NULL) 
    		return B;
    	if(B == NULL)
    		return A;
    	if(A->key < B->key)
    	{
    		Swap(&A,&B);
    	}
    	A->Right = Merge(A->Right,B);
    	if(A->Left == NULL)
    	{
    		A->Left = A->Right;
    		A->Right = NULL;
    	}
    	else 
    		if(A->Right)
    			if(A->Right->dist > A->Left->dist)
    				Swap(&A->Left,&A->Right);
    	if(A->Right == NULL)     
    		A->dist = 0;
    	else                
    		A->dist = A->Right->dist + 1;
    	return A;
    }
    LeftistTree* MakeIntoTree(int x)
    {
    	LeftistTree *T;
    	T = (LeftistTree*)malloc(sizeof(LeftistTree));
    	T->key = x;
    	T->dist = 0;
    	T->Left = T->Right = NULL;
    	return T;
    }
    LeftistTree* Insert(LeftistTree* A,int x)
    {
    	LeftistTree *B;
    	B = MakeIntoTree(x);
    	A = Merge(A,B);
    	return A;
    }
    
    /*删除最大节点*/
    int DeleteMax(LeftistTree** A)
    {
    	int t = (*A)->key;
    	*A = Merge((*A)->Left,(*A)->Right);
    	return t;
    }
    /*中序输出*/
    void InOrder(LeftistTree* T)
    {
    	if(T->Left)
    		InOrder(T->Left);
    	printf("%d %d
    ",T->key,T->dist);
    	if(T->Right)
    		InOrder(T->Right);
    }
    int main(void)
    {
    	LeftistTree* T = NULL;
    	int n,a;
    	scanf("%d",&n);
    	while(n --)
    	{
    		scanf("%d",&a);
    		T = Insert(T,a);
    		InOrder(T);
    	}
    	DeleteMax(&T);
    	printf("
    ");
    	InOrder(T);
    }


  • 相关阅读:
    机器学习之KNN算法学习笔记
    机器学习之决策树算法学习笔记
    RNN神经网络
    深度学习笔记-Tensorflow(一)
    CNN卷积神经网络-tensorflow
    个人喜欢的网址
    CSP2020游记
    题解 GDFZOJ 2020普转提十连测day5
    讲义 GDFZOJ 【38】 动态规划基础3
    题解 GDFZOJ 【2314】 东风谷早苗
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6995047.html
Copyright © 2011-2022 走看看