二叉树递归建立--深搜+宽搜遍历
2012-12-13 15:31
288 查看
/*输入文件自己建立*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #define max 100 int x; char ans[max]; typedef struct Tree { char val; struct Tree* pl; struct Tree* pr; }*T; T createtree( T p ) { char ch; scanf( "%c", &ch ); if( ch == '#' ) p = NULL; else { p = (T)malloc( sizeof(struct Tree) ); p->pl = createtree( p ); p->val = ch; p->pr = createtree( p ); } return p; } void view( T p ) { if( p != NULL ) { printf( "%c", p->val ); view( p->pl ); view( p->pr ); } else return ; } void bfs( T root ) { T q[max]; x = 0; T u; int front, rear; rear = front = 0; q[front++] = root; while( front > rear ) { u = q[rear++]; ans[x++] = u->val; if( u->pl != NULL ) q[front++] = u->pl; if( u->pr != NULL ) q[front++] = u->pr; } } int main() { int i; freopen( "in", "r", stdin ); T root = NULL; root = createtree( root ); printf( "文件输入: 12##3## "); printf( "\n\ndfs:\n" ); view( root ); printf( "\n\nbfs:\n" ); bfs( root ); for( i = 0; i < x; i++ ) printf( "%c", ans[i] ); return 0; }
相关文章推荐
- 二叉树的建立(根据遍历结果构建)、遍历(非递归)和搜索
- 二叉树的先序建立与非递归遍历C++版
- 递归建立和遍历二叉树等
- 二叉树基本数学知识,建立及三种递归遍历
- 括号法递归建立二叉树并层序遍历输出
- 二叉树的建立与递归遍历C++版
- 二叉树的建立、销毁、各种遍历(递归、非递归)
- 二叉树建立与遍历递归操作c++实现
- 二叉树的建立、遍历、添加、销毁(...递归)
- 输入完全二叉树的先序序列,用#代表虚结点(空指针),如ABD###CE##F##,建立二叉树的二叉链表。 (2)写出对用二叉链表存储的二叉树进行先序、中序和后序遍历的递归和非递归算法。 (3)写出
- C++实现二叉树的建立和三种递归遍历
- 二叉树的建立及递归遍历
- 【非递归】二叉树的建立及遍历
- c之二叉树链表操作---建立、(递归)前序遍历、中序遍历、后序遍历
- c++ 二叉树 的递归建立和递归遍历
- 二叉树的建立、销毁、各种遍历(递归、非递归)
- 二叉树的建立(非递归建立与定义建立)与基本操作(广度和深度遍历,求叶子树高)实现
- 二叉树非递归先序建立与后序遍历
- 数据结构——二叉树的建立和遍历(递归建树&层序遍历建树)
- 二叉树先序建立,先序遍历,中序遍历,后序遍历(递归)