二叉树的创建与遍历
2013-05-03 19:52
127 查看
二叉树的创建与遍历是比较基本的问题,也是比较难的问题,在c语言中需要对指针和链表的操作比较熟悉,还要对递归有比较好的理解,下面用代码展示,在代码中有比较详细的注释。下面就贴出代码:
输入一下数据:2 3 4 0 0 5 0 6 0 0 7 0 0形成下面的二叉树:
最后采用三种不行形式遍历二叉树的结果为:
/* 关于非线性的数据结构当然树形结构最重要,而树里面又属二叉树最重要, 所以在后面将列出二叉树的各种使用方法,包括基本的遍历,和我在一些 资料上看到的关于二叉树的面试题型。至于一些很高级的树形结构,如平 衡树,还有线索树等,就暂时不写出来,先完成最基本的,再一点点的加 */ #include <stdio.h> #include <stdlib.h> //typedef void * ElemType; typedef int ElemType; struct BinaryTree { ElemType e; BinaryTree *left; BinaryTree *right; }; /* 二叉树主要的难点是遍历 基本上所有的算法都是基于二叉树的遍历的 至于创建二叉树就需要在输入的时候把线性的结构转换成非线性的 用输入的方式创建二叉树,创建二叉树有三种方式,和二叉树的遍 历是一样的,所以将采用三种方式创建二叉树,再用三种方式遍历 二叉树, */ //将输入独立起来, BinaryTree * CreateTree(BinaryTree *bTree) { int input; scanf("%d",&input); //按先序建立二叉树 if(input == 0) { bTree = NULL; //置为NULL后结束 return bTree; } bTree = (BinaryTree *)malloc(sizeof(BinaryTree)); bTree ->e = input; bTree->left = CreateTree(bTree->left); bTree->right = CreateTree(bTree->right); return bTree; } //三种递归遍历方法 void VisitTree(BinaryTree *bTree) //这个是先序遍历,先根,左子树,右子树 { if(bTree != NULL) { printf("%d ",bTree->e); VisitTree(bTree->left); VisitTree(bTree->right); } } void VisitTree1(BinaryTree *bTree) //中序遍历,左子树,根,右子树 { if(bTree != NULL) { VisitTree1(bTree->left); printf("%d ",bTree ->e); VisitTree1(bTree ->right); } } void VisitTree2(BinaryTree *bTree) //后序遍历,左子树,右子树,根 { if(bTree != NULL) { VisitTree2(bTree->left); VisitTree2(bTree->right); printf("%d ",bTree ->e); } } int main() { BinaryTree *bTree; bTree=CreateTree(bTree); printf("先序遍历结果为:\n"); VisitTree(bTree); printf("\n"); printf("中序遍历结果为:\n"); VisitTree1(bTree); printf("\n"); printf("后序序遍历结果为:\n"); VisitTree2(bTree); printf("\n"); return 0; }
输入一下数据:2 3 4 0 0 5 0 6 0 0 7 0 0形成下面的二叉树:
最后采用三种不行形式遍历二叉树的结果为:
相关文章推荐
- 二叉树的创建遍历-递归与非递归
- 二叉树的创建与遍历
- 二叉树的创建与遍历(C语言实现)
- php 实现简单链式二叉树 创建 和遍历
- 【数据结构】二叉树的递归与非递归创建和遍历
- 二叉树创建及遍历算法(递归及非递归)
- 二叉树(2)二叉树创建的3种方法,二叉树的递归遍历,二叉树的销毁
- 由前序遍历序列跟中序遍历序列生成二叉树,如果输入序列不正确返回fail~ 如果正确则前序遍历创建的二叉树
- 二叉树的创建及递归和非递归遍历
- java创建二叉树并实现3种遍历(不使用类集)
- 二叉树总结创建,遍历
- 二叉树的创建和遍历方法(上)
- 创建二叉排序树,二叉树的六种遍历
- 记录一下 最简单的php创建和遍历二叉树
- 二叉树的创建、复制、遍历
- 二叉树的遍历及创建(java)
- C预言的二叉树的创建和三种遍历方式
- 二叉树与其基本递归操作:创建、遍历、特征量计算等
- java实现二叉树的创建及三种递归遍历
- 二叉树的基本操作精集(创建、遍历、求深度结点以及叶子结点个数)