☆ 二叉树的建立与遍历

本文介绍的是具有二叉链表节点结构的二叉树建立与遍历,

下面直接附上代码:

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0

typedef int Status;
typedef char TElemType;

typedef struct BiTNode			//二叉树的二叉链表节点结构 
{
	TElemType data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void CreatBiTree(BiTree *T)  		//使用二级指针创建二叉链表()二叉树 
{
	TElemType ch;
	scanf("%c",&ch);
	if(ch=='#')
	{
		*T=NULL;
	} 
	else
	{
		if(!(*T=(BiTree)malloc(sizeof(BiTNode))))			//动态分配空间 
		{
			printf("Memory allocate error!");
			exit(ERROR); 
		}
		(*T)->data=ch;			//生成根节点 
		CreatBiTree(&(*T)->lchild);			//构造左子树 
		CreatBiTree(&(*T)->rchild);			//构造右子树 
	}
}

void PreOrderTraverse(BiTree T)
{
	if(T==NULL)
	{
		
		return;
	}
	printf("%c",T->data);
	PreOrderTraverse(T->lchild);
	PreOrderTraverse(T->rchild);
}

Status main()
{
	BiTree T;
	system("title 二叉链表的建立与遍历"); 
	printf("请按照前序连续输入二叉树中节点的值(一个字符)\n"); 
	CreatBiTree(&T);
	system("pause");
	PreOrderTraverse(T);
}

这里在创建二叉树的时候,使用的是二级指针,这在当初我的单链表的那篇文章中并未涉及,当初写单链表完全使用的是以及指针,

但是在这里创建的时候就必须使用二级指针了,否则不会报错但是不能产生理想结果,具体有关二级指针的介绍以及使用可以参考另一位博主的博客:Q点我直达Q

文章到此结束,具体有关二叉树的知识点还需自行学习理解。

****************************************************************************************************************************************

             最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。

****************************************************************************************************************************************

猜你喜欢

转载自blog.csdn.net/qq_42292831/article/details/81708859