首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

纯C创设二叉树及二叉树的遍历

2013-10-22 
纯C创建二叉树及二叉树的遍历代码如下:#include stdio.h#include malloc.htypedef struct TreeNode Tr

纯C创建二叉树及二叉树的遍历

代码如下:

#include <stdio.h>#include <malloc.h>typedef struct TreeNode Tree;struct TreeNode{int value;int level;//levelTree *leftChild;Tree *rightChild;Tree *parent;};Tree *SetChild(int value,Tree *parentT);//ok void View_Tree(Tree *pThis);//okvoid mk_space(int nums);int main(){Tree *k;Tree *moveon;//Tree *t;int inValue=0,c_val=0;//creat a tree(init k)k=(Tree *)malloc(sizeof(Tree));//k as top,do not changek->parent=NULL;//the top point has no parentk->level=0;moveon=k;//save k's location for useprintf("input the value of the first item:");scanf("%d",&inValue);moveon->value=inValue;while(inValue>0 || c_val!=4){printf("input left value of %d:",moveon->value);scanf("%d",&inValue);//set valueif(inValue>0)moveon->leftChild=SetChild(inValue,moveon);printf("input right value of %d:",moveon->value);scanf("%d",&inValue);if(inValue>0)moveon->rightChild=SetChild(inValue,moveon);printf("next?\nif go up,input 1\nif go to left child,input 2\nif goto right child,input 3\nif exit,input 4\ninput:");scanf("%d",&c_val);if(c_val==1){if(moveon->parent==NULL) break;moveon=moveon->parent;}else if(c_val==2){moveon=moveon->leftChild;}else if(c_val==3){moveon=moveon->rightChild;}else if(c_val==4){break;//跳出循环}}if(inValue==0) return 0;//开始遍历View_Tree(k);free(k);}Tree *SetChild(int value,Tree *parentT)//ok {Tree *ks=(Tree *)malloc(sizeof(Tree));ks->value=value;//set valueks->parent=parentT;//set parent point to go backks->leftChild=NULL;//left andks->rightChild=NULL;//right are set nullks->level=parentT->level+1;return ks;}void View_Tree(Tree *pThis){mk_space(pThis->level);printf("%d\n",pThis->value);if(pThis->leftChild!=NULL){View_Tree(pThis->leftChild);}if(pThis->rightChild!=NULL){View_Tree(pThis->rightChild);}}void mk_space(int nums){int k;for(k=0;k<nums*2;k++){printf(" ");}}


热点排行