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

线索二叉树的建立(C/C++语言,非递归)

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

线索二叉树的建立(C/C++语言,非递归)

主要还是参考王道的C语言督学营,给自己做个笔记,方便以后复习吧,虽然以后这种简单的代码也许我可以随手写出来。递归更简单,但是我真的理解不了。

题目:读取10个元素 87  7 60 80 59 34 86 99 21  3,然后建立二叉查找树,中序遍历输出3  7 21 34 59 60 80 86 87 99

#define _CRT_SECURE_NO_WARNINGS//vs2019中要用scanf要有这个接口
#include
#include

//读取10个元素 87  7 60 80 59 34 86 99 21  3,
//然后建立二叉查找树,中序遍历输出3  7 21 34 59 60 80 86 87 99,
//针对有序后的元素,存入一个长度为10的数组中,
//通过折半查找找到21的下标(下标为2),然后输出2


//数据无重复
//定义树的节点
typedef struct BiTNode {
	int data;
	struct BiTNode* lchild, * rchild;
}BiTNode,*BiTree;

bool BiTInsert(BiTree &tree, int key) {//tree为将要插入的树,key为要插入的值//其实这个函数中我有点理解不了为什么tree传进来是二级指针。我的C语言太差了。希望以后能理解
	BiTree pcur=tree;//pcur为当前插入节点
	BiTree pparent=NULL;//pparent为当前插入节点的父节点

	if (tree == NULL){//树中不存在元素,直接插入
		tree = (BiTree)calloc(1, sizeof(BiTNode));//tree只是一个指针,所以要申请节点,calloc和malloc的作用基本一致,但会为指针设定初始值为NULL
		tree->data = key;
		return true;
	}
	while (pcur != NULL) {//树中存在元素,找到待插入的节点
		if (pcur->data == key)//插入的元素已存在,则插入失败
			return false;
		if (pcur->data > key) {//当前节点的值比key大,则插入当前节点的左边
			pparent = pcur;
			pcur = pcur->lchild;//指向下一个节点
		}
		else//当前节点的值比key小,则插入当前节点的右边
		{
			pparent = pcur;
			pcur = pcur->rchild;//指向下一个节点
		}
	}

	//找到待插入节点的父节点后插入节点
	BiTree temp;//将要插入的节点
	temp = (BiTree)calloc(1, sizeof(BiTNode));//为插入的值申请树的节点
	temp->data = key;//将插入的值放到树的节点中,这个树的节点现在还是单独存在,还没有和树连在一起
	if (pparent->data > key)//判断插入的节点在父节点的左边还是右边
		pparent->lchild=temp;//将树连到树节点中
	else
		pparent->rchild=temp;
	return true;
}
//中序遍历输出二叉树,每个元素占3个字母位置
void InOrder(BiTree p) {
	if (p != NULL) {
		InOrder(p->lchild);
		printf("%d ", p->data);
		InOrder(p->rchild);
	}
}
//主函数
int main() {
	BiTree tree=NULL;//定义一棵树
	int d;//将要输入的元素
	for (int i = 0; i < 10; i++) {
		scanf("%d", &d);
		BiTInsert(tree, d);
	}
	InOrder(tree);
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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