二叉树初次的整体过程

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 小时前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员11 小时前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish12 小时前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱13 小时前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者1 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮1 天前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者1 天前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考1 天前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
HXhlx1 天前
CART决策树基本原理
算法·机器学习
Wect1 天前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript