欢迎关注Hadoop、Spark、Flink、Hive、Hbase、Flume等大数据资料分享微信公共账号:iteblog_hadoop
  1. 文章总数:977
  2. 浏览总数:11,944,989
  3. 评论:3936
  4. 分类目录:106 个
  5. 注册用户数:6113
  6. 最后更新:2018年12月13日
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
iteblog_hadoop
大数据技术博客公众号bigdata_ai
大数据猿:
bigdata_ai

二叉树的链表表示法实现

本程序实际上是构建了一颗二叉排序树,程序最后输出构建数的中序遍历。
代码实现:

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

// Author: 过往记忆
// Email: wyphao.2007@163.com
// Blog: https://www.iteblog.com

typedef int DataType;
 
typedef struct BTree{
	DataType data;
	struct BTree *Tleft;
	struct BTree *Tright;	
}*BTree;

BTree CreateTree(); 
BTree insert(BTree root, DataType data);
void InBTree(BTree root); 
 
int main(){
	BTree root = NULL;
	root = CreateTree();
	InBTree(root); 
	printf("\n"); 
	return 0; 
}

BTree CreateTree(){
	BTree root = NULL;
	DataType temp = 0;
	printf("Input data, if you want to exit, please input 0:\n"); 
	scanf("%d", &temp); 
	while(temp != 0){
	    root = insert(root, temp);	
		scanf("%d", &temp);  
	}
	
	return root; 
} 

BTree insert(BTree root, DataType data){
	BTree ptr = root;
	BTree tempNode; 
	BTree newNode = (BTree)malloc(sizeof(struct BTree)); 
	newNode->data = data ;
	newNode->Tleft = NULL;
	newNode->Tright = NULL;
	
	if(ptr == NULL){
		return newNode; 
	}else{
		while(ptr != NULL){
			tempNode = ptr; 
			if(ptr->data >= data){
				ptr = ptr->Tleft; 
			}else{
				ptr = ptr->Tright; 
			} 
		} 
		
		if(tempNode->data >= data){
			tempNode->Tleft =  newNode; 
		}else{
			tempNode->Tright =  newNode; 
		} 
	}
	return root; 
}

void InBTree(BTree root){
	if(root != NULL){
		InBTree(root->Tleft); 
		printf("%d ", root->data); 
		InBTree(root->Tright);
	} 
} 
本博客文章除特别声明,全部都是原创!
转载本文请加上:转载自过往记忆(https://www.iteblog.com/)
本文链接: 【二叉树的链表表示法实现】(https://www.iteblog.com/archives/192.html)
喜欢 (1)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!