C语言实现二叉链表(树)的创建与三种遍历

C语言实现二叉链表(树)的创建与三种遍历,第1张

若节点中的int数据位内容为0则视为null节点

print1,2,3分别对应前,中,后序遍历

​

#include
#include

struct Tnode{
	int data;
	Tnode *leftchild;
	Tnode *rightchild;
};

struct Tnode *initTree(){
	struct Tnode *p;
	int x;
	printf("请输入数据:\n");
	scanf("%d",&x);
	fflush(stdin);
	p=(struct Tnode *)malloc(sizeof(struct Tnode));
	if(x==0){
		p=NULL;
	}else{

	p->data=x;
	p->leftchild=initTree();
	p->rightchild=initTree();
	
    }
    return p;
}

void print1(struct Tnode *p){
	if (p==NULL){
		return;
	}else{
		printf("%d",p->data);
		print1(p->leftchild);
		print1(p->rightchild);
	}
}

void print2(struct Tnode *p){
	if (p==NULL){
		return;
	}else{
		print2(p->leftchild);
		printf("%d",p->data);
		print2(p->rightchild);
	}
}

void print3(struct Tnode *p){
	if (p==NULL){
		return;
	}else{
		print3(p->leftchild);
		print3(p->rightchild);
		printf("%d",p->data);
	}
}

int main(){
	struct Tnode *p=(struct Tnode *)malloc(sizeof(Tnode));
	p=initTree();
	printf("前序遍历结果:\n");
	print1(p);
	printf("\n");
	printf("中序遍历结果\n");
	print2(p);
	printf("\n");
	printf("后序遍历结果\n");
	print3(p);
	
	return 0;
}

[点击并拖拽以移动]
​

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/2990294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存