二叉树初次的整体过程

1.计算二叉树节点的范围

2.计算用父亲下标找出儿子的下标,用儿子的下标找出父亲的下标方法

2.向下调整算法

cpp 复制代码
void AdjustUp(HPDataType*a,int child)
{
	int parent = (child - 1) / 2;
	while (0 < child)
	{
		if (a[child] < a[parent])
		{
			HPDataType* tem = a[child];
			a[child] = a[parent];
			a[parent] = tem;
			child = parent;
			parent = (child - 1) / 2;
		}
		else
		{
			break;
		}
	}
}

5.整体代码

cpp 复制代码
#pragma once
#include<stdio.h>
#include<assert.h>
#include<stdbool.h>
#include <stdlib.h>
typedef int HPDataType;
typedef struct Heap
{
	HPDataType*a;
	int size;
	int capacity;
}HP;

void HeapInit(HP* php);
void HeapDestroy(HP* php);
void HeapPush(HP* php, HPDataType x);







#include"Heap.h"
void HeapInit(HP* php)
{
	assert(php);
	php->a = NULL;
	php->capacity = 0;
	php->size = 0;
}


void HeapDestroy(HP* php)
{
	free(php->a);
}


void AdjustUp(HPDataType*a,int child)
{
	int parent = (child - 1) / 2;
	while (0 < child)
	{
		if (a[child] < a[parent])
		{
			HPDataType* tem = a[child];
			a[child] = a[parent];
			a[parent] = tem;
			child = parent;
			parent = (child - 1) / 2;
		}
		else
		{
			break;
		}
	}
}

void HeapPush(HP* php, HPDataType x)
{
	assert(php);
	if (php->size == php->capacity)
	{
		int newCapacity = php->capacity == 0 ? 4 : php->capacity * 2;
		HPDataType* tem = (HPDataType*)realloc(php->a, newCapacity * sizeof(HPDataType));
		if (tem == NULL)
		{
			perror("realloc fale");
			return;
		}
		php->a = tem;
		php->capacity = newCapacity;
	}
	php->a[php->size] = x;
	php->size++;

	//向上调整,要把结构体的数组和数组的最后一位元素传过去当孩子
	AdjustUp(php->a, php->size - 1);
}
相关推荐
怕浪猫4 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i6 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J6 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
weixin_307779137 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
朝朝辞暮i8 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i8 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
Godspeed Zhao9 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达
可乐ea9 小时前
Agent 模型分级升级路由:用置信度阈值把贵模型省下来
人工智能·算法·机器学习·结构化输出·置信度路由·模型升级路由·大模型成本优化
Navigator_Z9 小时前
LeetCode //C - 1278. Palindrome Partitioning III
c语言·算法·leetcode
Godspeed Zhao9 小时前
现代智能雷达技术18——算法(4)
算法