栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言构建二叉树

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言构建二叉树

1.num[10] = { 1,2,3,4,5,6,7,8,9,10 },排列成二叉树

2.父节点的位置为pos,左孩子的位置为2pos,右孩子的位置为2pos+1
3.那么递归结束条件为位置大于10时,
4.模拟几次递归,先序

  • 创建节点1,值为1,左孩子位置为2
  • 创建节点2,值为2,左孩子位置为4
  • 创建节点3,值为4,左孩子位置为8
  • 创建节点4,值为8,左孩子位置为16,超出,右孩子为17,超出,返回上层函数,即第三个节点右孩子位置为9
  • 创建节点5,值为9…
  1. 接下来就可以写代码了,我想只传空指针给函数得到二叉树,就得改变这个空指针的值,所以用了指针的指针
#include
#include

typedef struct Treenode {
	struct Treenode* left;
	struct Treenode* right;
	int value;
}treenode;

void init(treenode** tree, int* num, int size, int pos);
void display(treenode* tree);

void main() {
	int num[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int size = sizeof num / 4;
	treenode* tree=NULL;
	init(&tree, num, 10, 1);
	display(tree);


}

void init(treenode** tree, int* num, int size, int pos) {
	//这个if判断不了num为空,数组为空,指针的值是一个随机数而不是null
	//此时size是2而不是0
	if (!num) {
		printf("输入空n");
		exit(1);
	}
	if (pos <= size) {
		*tree = (treenode*)malloc(24);
		if (!*tree) {
			printf("errorn");
			exit(1);
		}
		(*tree)->value = num[pos-1];
		(*tree)->left = NULL;
		(*tree)->right = NULL;
		init(& ( (*tree)->left ), num, size, pos * 2);
		init(& ( (*tree)->right ), num, size, pos * 2 + 1);
	}
}

void display(treenode* tree) {
	if (tree) {
		printf("%d ", tree->value);
		display(tree->left);
		display(tree->right);
	}
}

二叉搜索树,待修改

#include
#include
#include

typedef struct Treenode {
	struct Treenode* left;
	struct Treenode* right;
	int value;
}treenode;

void main() {
	int num[10] = { 1,3,5,7,9,2,4,6,8,10 };
	treenode* tree = NULL;
}

void init(treenode** tree,int* num,int size,int pos) {
	if (pos <= size) {
		if (!tree) {
			(*tree) = (treenode*)malloc(24);
			(*tree)->value = num[pos - 1];
			(*tree)->left = NULL;
			(*tree)->right = NULL;
		}
		
		if ((*tree)->value >= num[pos])
			init((*tree)->left, num, size, pos++);
		else
			init((*tree)->right, num, size, pos++);
		
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011540.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号