非线性结构之二叉树
2015-07-07 21:57
459 查看
二叉树的建立和遍历
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct tree{
int data;
struct tree *leftNode;
struct tree *rightNode;
}tree;
tree * createTree();
void proTraversal(tree *root);
void InoTraversal(tree *root);
void posTraversal(tree *root);
int main()
{
tree *root;
root = createTree();
printf("先序遍历:\n");
proTraversal(root);
printf("中序遍历:\n");
InoTraversal(root);
printf("后序遍历:\n");
posTraversal(root);
return 0;
}
tree * createTree()
{
tree *root,*pn1,*pn2,*pn3,*pn4,*pn5,*pn6 = NULL;
//存储节点
root=(tree *)malloc(sizeof(tree));
root->data = 0;
pn1=(tree *)malloc(sizeof(tree));
pn1->data = 1;
pn2=(tree *)malloc(sizeof(tree));
pn2->data = 2;
pn3=(tree *)malloc(sizeof(tree));
pn3->data = 3;
pn4=(tree *)malloc(sizeof(tree));
pn4->data = 4;
pn5=(tree *)malloc(sizeof(tree));
pn5->data = 5;
pn6=(tree *)malloc(sizeof(tree));
pn6->data = 6;
//存储关系
root->leftNode = pn1;
root->rightNode = pn2;
pn1->leftNode = pn3;
pn1->rightNode = pn4;
pn2->leftNode = pn5;
pn2->rightNode = pn6;
pn3->leftNode = NULL;
pn3->rightNode = NULL;
pn4->leftNode = NULL;
pn4->rightNode = NULL;
pn5->leftNode = NULL;
pn5->rightNode = NULL;
pn6->leftNode = NULL;
pn6->rightNode = NULL;
//返回头节点
return root;
}
void proTraversal(tree *root)
{
if(root!=NULL)
{
printf("%d\n",root->data);
proTraversal(root->leftNode);
proTraversal(root->rightNode);
}
}
void InoTraversal(tree *root)
{
if(root!=NULL)
{
InoTraversal(root->leftNode);
printf("%d\n",root->data);
InoTraversal(root->rightNode);
}
}
void posTraversal(tree *root)
{
if(root!=NULL)
{
posTraversal(root->leftNode);
posTraversal(root->rightNode);
printf("%d\n",root->data);
}
}
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct tree{
int data;
struct tree *leftNode;
struct tree *rightNode;
}tree;
tree * createTree();
void proTraversal(tree *root);
void InoTraversal(tree *root);
void posTraversal(tree *root);
int main()
{
tree *root;
root = createTree();
printf("先序遍历:\n");
proTraversal(root);
printf("中序遍历:\n");
InoTraversal(root);
printf("后序遍历:\n");
posTraversal(root);
return 0;
}
tree * createTree()
{
tree *root,*pn1,*pn2,*pn3,*pn4,*pn5,*pn6 = NULL;
//存储节点
root=(tree *)malloc(sizeof(tree));
root->data = 0;
pn1=(tree *)malloc(sizeof(tree));
pn1->data = 1;
pn2=(tree *)malloc(sizeof(tree));
pn2->data = 2;
pn3=(tree *)malloc(sizeof(tree));
pn3->data = 3;
pn4=(tree *)malloc(sizeof(tree));
pn4->data = 4;
pn5=(tree *)malloc(sizeof(tree));
pn5->data = 5;
pn6=(tree *)malloc(sizeof(tree));
pn6->data = 6;
//存储关系
root->leftNode = pn1;
root->rightNode = pn2;
pn1->leftNode = pn3;
pn1->rightNode = pn4;
pn2->leftNode = pn5;
pn2->rightNode = pn6;
pn3->leftNode = NULL;
pn3->rightNode = NULL;
pn4->leftNode = NULL;
pn4->rightNode = NULL;
pn5->leftNode = NULL;
pn5->rightNode = NULL;
pn6->leftNode = NULL;
pn6->rightNode = NULL;
//返回头节点
return root;
}
void proTraversal(tree *root)
{
if(root!=NULL)
{
printf("%d\n",root->data);
proTraversal(root->leftNode);
proTraversal(root->rightNode);
}
}
void InoTraversal(tree *root)
{
if(root!=NULL)
{
InoTraversal(root->leftNode);
printf("%d\n",root->data);
InoTraversal(root->rightNode);
}
}
void posTraversal(tree *root)
{
if(root!=NULL)
{
posTraversal(root->leftNode);
posTraversal(root->rightNode);
printf("%d\n",root->data);
}
}
相关文章推荐
- [华为机试真题]72.操作系统任务调度问题
- 虚幻4蓝图:流程控制(一)
- 面试常问的40个问题 附带经典答案!
- 【Java】若MxN矩阵中某个元素为0, 则将其所在的行与列清零
- unity3d中的碰撞系统
- QTabWidget 双击增加tab页
- 防盗手机之开篇
- 在网页中嵌入百度地图
- 【Linux 内核网络协议栈源码剖析】accept 函数剖析
- 数据挖掘 K-Means++聚类算法
- wifi破解
- 操作缓存文件,熟悉File操作
- 查看修改mysql编码方式
- c++对象模型的初步理解
- 七月七号
- SQL Server2008 的安装
- [Leetcode]-Contains Duplicate HashTbale重解
- 《财务决策与分析》——期末总结(慕课组)
- 神经网络中的softmax函数
- MySQL Python Windows下的安装经历(失败)