当前位置: 首页 > article >正文

完全二叉树的递归创建思路及代码

文章目录

  • 🍊自我介绍
  • 🍊创建思路
    • 图形
    • 完全二叉树的结论
    • 设计图例
  • 🍊创建代码编写
    • bitree.c
    • bitree.h
    • main.c


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


🍊创建思路

图形

在这里插入图片描述
  1,2,3,4,5,6表示的是节点的编号,a,b,c,d,e,f表示的是节点的相关数据。

完全二叉树的结论

有n个结点,对于编号为i(i>=1)的结点:
(1)左孩子存在:2 * i <= n(结点个数),左孩子编号为2 * i <= n
(2)右孩子存在:2 * i + 1 <= n,右孩子编号2 * i + 1 <= n

我们根据左右孩子存在的条件及递归运用编写相关的代码。

设计图例

在这里插入图片描述

🍊创建代码编写

bitree.c

#include "bitree.h" 

bitree_t *create_binatry_tree(int n)
{
	bitree_t *root = NULL;

	root = (bitree_t *)malloc(sizeof(bitree_t));
	memset(root,0,sizeof(bitree_t));

	root->n = n;
	root->lchild = root->rchild = NULL;


	printf("Input %d node data : ",n);
	scanf("%c",&(root->data));

	//清除缓冲区数据
	while(getchar() != '\n');
	
	//左孩子存在条件
	if(2 * n <= N)
	{
		root->lchild = create_binatry_tree(2 * n);	
	}

	//左孩子存在条件
	if(2 * n  + 1 <= N)
	{
		root->rchild = create_binatry_tree(2 * n + 1);	
	}

	return root;
}

bitree.h

#ifndef __BITREE_H__
#define __BITREE_H__

#include <string.h>
#include <stdio.h>
#include <stdlib.h>


#define N 3

typedef char data_t;

typedef struct bitree
{
	int n; //保存编号
	data_t data; //保存字符
	struct bitree *lchild; //保存左孩子的地址
	struct bitree *rchild; //保存右孩子的地址
}bitree_t;


extern bitree_t *create_binatry_tree(int n);

#endif

main.c

#include "bitree.h"

int main()
{
	bitree_t *root;

	root = create_binatry_tree(1);

	printf("create is successful!\n");
	return 0;
}

http://www.kler.cn/news/324454.html

相关文章:

  • 1Panel安装部署证书(httpsok.com)
  • matlab入门学习(二)矩阵、字符串、基本语句、函数
  • UART驱动学习一(UART硬件介绍)
  • 泛微E8JDK1.6判断时间在早上8点半到晚上六点半之间的值
  • WPF入门教学二十四 WPF性能优化
  • 机器学习与深度学习的技术比较
  • Docker网络、数据卷及安全优化
  • C++学习笔记(39)
  • C#中的报文(Message)
  • 9月29日微语报,星期日,农历八月廿七
  • C++--IO流
  • Eureka原理实践:构建高可用、可扩展的微服务架构
  • .NET 红队武器库和资源集合 (第38期)
  • Scrapy框架入门
  • Django 常用注解
  • python的pyinstaller
  • InnoDB索引结构
  • 【分布式微服务云原生】8分钟掌握微服务通信的艺术:Dubbo与OpenFeign全面解析
  • MacOS上安装MiniConda的详细步骤
  • SVG 滤镜:探索图形设计的无限可能
  • 低代码可视化-UniApp二维码可视化-代码生成器
  • C#测试调用FreeSpire.PDFViewer浏览PDF文件
  • 浅谈C++之Redis缓存
  • 遥感图像变换检测实践上手(TensorRT+UNet)
  • 一文理解mysql 联合索引和各种SQL语句分析
  • 软考论文《论模型驱动架构设计方法及其应用》精选试读
  • Python邮件发送附件:怎么配置SMTP服务器?
  • Java 常用运算符简单总结
  • JS中的事件和DOM操作
  • 【表达式求值算法】拆解复杂问题:实现计算器