您的位置:首页 > 其它

二叉树之层次遍历(一)

2016-11-12 23:11 316 查看
这篇层次遍历用的是递归的方法。比较简单,主要是领悟思想。其主要思想是通过得出树的深度来遍历每一层。请看代码
//二叉树层次遍历
/*递归方法*/
//主要难点有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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: