二叉树初次的整体过程

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);
}
相关推荐
YH552698425 分钟前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
遥感知识服务2 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶2 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆2 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
叩码以求索4 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
北风toto6 小时前
中缀、前缀、后缀表达式
算法·软件设计师
听取WA声一片(无恶意)6 小时前
CSP-J/CSP-S 深度优先搜索(DFS)完全讲义
c++·算法·深度优先
码流怪侠6 小时前
2026年8月GitHub热榜深度拆解:Agent Skills席卷开源圈,一个“技能包“收割5万星
算法·程序员·github
hold?fish:palm6 小时前
30 两两交换链表中的节点
数据结构·算法·链表
Nil2086 小时前
leetcode 98验证二叉搜索树
算法·leetcode·职场和发展