本文介绍的是具有二叉链表节点结构的二叉树建立与遍历,
下面直接附上代码:
#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
文章到此结束,具体有关二叉树的知识点还需自行学习理解。
****************************************************************************************************************************************
最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
****************************************************************************************************************************************