二叉树之层次遍历(一)

来源:互联网 发布:人工智能的中医郎中 编辑:程序博客网 时间:2024/05/21 12:46
这篇层次遍历用的是递归的方法。比较简单,主要是领悟思想。其主要思想是通过得出树的深度来遍历每一层。请看代码
//二叉树层次遍历/*递归方法*///主要难点有2个,1是得到树的深度,2是循环输出每层的节点#include<stdio.h>#include<stdlib.h>//创建节点typedef struct Node{int data;struct Node *lchild;struct Node *rchild;}Tree_Node,*Tree;//创建树Tree CreateTree(){Tree t=NULL;int a;scanf("%d",&a);if(a==-1){return t;}else{t=(Tree)malloc(sizeof(Tree_Node));t->data=a;t->lchild=CreateTree();t->rchild=CreateTree();return t;}}int max(int a,int b){if(a>b){return a;}else{return b;}}//求得树的深度int depth(Tree &t){if(t==NULL){return 0;}return 1+max(depth(t->lchild),depth(t->rchild));}//输出每层的节点void printTree(Tree &t,int lv){if(t==NULL||lv<0){return;}if(lv==1){printf("\t%d",t->data);return;}printTree(t->lchild,lv-1);printTree(t->rchild,lv-1);}int main(){int d;Tree t;t=CreateTree();d=depth(t);for(int i=1;i<=d;i++){printTree(t,i);printf("\n");}return 0;}

0 0
原创粉丝点击