二叉树之层次遍历(一)
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; }
相关文章推荐
- 二叉树的层次遍历
- UVa 122 (二叉树的层次遍历) Trees on the level
- 二叉树的层次遍历
- 二叉树的前序、中序、后序及层次遍历的递归与非递归源码实现
- 层次遍历二叉树-三种不同的方法
- 第十一周项目1--验证算法之二叉树的层次遍历算法
- UVa 11234 Expressions 二叉树 层次遍历 广搜
- 二叉树的层次遍历(f m)
- 数据结构 树 层次遍历二叉树 C语言版
- 层次遍历构建二叉树
- 一步一步复习数据结构和算法基础-层次建立层次遍历二叉树
- 二叉树的创建,以及递归前中后序以及层次遍历
- 利用层次遍历非递归求二叉树高度
- 树的遍历 有后序遍历和中序遍历建立二叉树,并输出层次遍历
- 二叉树 的先序 中序、后序遍历、层次遍历以及树状打印等操作
- 二叉树的建立、遍历、深度、高度及层次遍历
- 二叉树 的先序 中序、后序遍历、层次遍历以及树状打印等操作
- 按层次遍历二叉树
- 107. Binary Tree Level Order Traversal II (二叉树由底向上层次遍历)
- 二叉树层次遍历