二叉树的建立及遍历
2013-11-19 18:41
190 查看
首先定义二叉树链表的节点结构:
先序遍历创立二叉树链表,
上面的代码是当输入字符'#'时,当前节点为叶子,不再继续生成子节点,还要注意这个创建函数中的形参,是指向BiTree的指针,实际上是指向BiTNode的一个二级指针。
遍历函数如下:
前序遍历:
中序遍历:
后序遍历:
验证代码:
这里需要注意的是CreateBiTree函数中输入的参数值,输入Tree的地址值。输出结果如下图所示:
typedef char TElemType; typedef struct BiTNode { TElemType data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree;
先序遍历创立二叉树链表,
void CreateBiTree(BiTree *T) { TElemType ch; scanf("%c", &ch); if(ch == '#') *T = NULL; else { *T = (BiTree)malloc(sizeof(BiTNode)); if(!*T) exit(OVERFLOW); (*T)->data = ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); }
上面的代码是当输入字符'#'时,当前节点为叶子,不再继续生成子节点,还要注意这个创建函数中的形参,是指向BiTree的指针,实际上是指向BiTNode的一个二级指针。
遍历函数如下:
前序遍历:
void PreOrderTraverse(BiTree T) { if(T == NULL) return; printf("%c", T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); }
中序遍历:
void InOrderTraverse(BiTree T) { if(T == NULL) return; InOrderTraverse(T->lchild); printf("%c", T->data); InOrderTraverse(T->rchild); }
后序遍历:
void PostOrderTraverse(BiTree T) { if(T == NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c", T->data); }
验证代码:
BiTree Tree; CreateBiTree(&Tree); PreOrderTraverse(Tree); cout << endl; InOrderTraverse(Tree); cout << endl; PostOrderTraverse(Tree); cout << endl;
这里需要注意的是CreateBiTree函数中输入的参数值,输入Tree的地址值。输出结果如下图所示:
相关文章推荐
- 二叉树-----静态二叉链表(游标)-----建立(先序)+遍历(7种)
- 2136 数据结构实验之二叉树的建立与遍历
- 二叉树的建立和遍历
- 二叉树建立,递归,非递归,前序,中序,后序遍历
- 数据结构----二叉树----建立与遍历
- 二叉树的建立与DFS遍历
- 二叉树的建立和遍历
- Java实现二叉树建立以及三种遍历
- sdut 2136 数据结构实验之二叉树的建立与遍历(二叉树遍历,叶子数和深度)
- 数据结构实验之二叉树的建立与遍历
- 二叉树的建立及遍历(前、中、后序) xtu-exam 1004
- 暑假集训 8.8 sdut2136 数据结构实验之二叉树的建立与遍历
- 二叉树的建立以及先序、中序、后序遍历C语言实现
- 20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
- 建立二叉树,并层次遍历输出
- 数据结构之二叉树的递归建立和遍历
- 扩展二叉树 建立 以及 前序遍历 中序遍历 后序遍历 的非递归算法
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- 二叉树-----动态二叉链表-----建立(先序)+遍历(7种)
- 递归建立普通二叉树两种方式遍历