在这里将二叉树的建立和遍历分开讲解,首先是二叉树的建立;
储存基本单位与链表结构相同;
基本单位中储存当前节点的数据和当前节点的左右节点的地址;
具体使用到结构体
//结点声明,数据域、左指针、右指针
truct BiTNode
{
int data;
struct BiTNode *Left,*Right;
}
在建立过程中使用的是递归的方法:
先左结点再右结点;
T->Left = CreateBiTree();
T->Right = CreateBiTree();
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
//节点声明,数据域、左指针、右指针
typedef struct BiTNode
{
int data;
struct BiTNode *Left,*Right;
}BiTNode,*BiTree;
int main()
{
BiTree T;
int d;
T = CreateBiTree();//建立
PreOrderTraverse(T);//
return 0;
}
//先序建立二叉树
BiTree CreateBiTree()
{
int a;
BiTree T;
scanf("%d",&a);
if(a==0)
T=NULL;
else
{
T = (BiTree)malloc(sizeof(BiTNode));
T->data = a;
T->Left = CreateBiTree();
T->Right = CreateBiTree();
}
return T;//返回根节点
}
仅代表个人观点,欢迎交流探讨,勿喷~~~