#include <cstdlib>
#include <iostream>
#define OVERFLOW 1
#define OK 1
#define ERROR -1
typedef int Status;
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
BiTNode *lchild;
BiTNode *rchild;
}BiTNode, *BiTree;
Status CreateBiTreeByPreOrder (BiTree &T){
//这里的函数形参不能是*T,如果是*T的话,建立起来的是以T的拷贝为根的树,而不是T.
TElemType ch;
std::cin >> ch;
if (ch == '#'){
// if (ch == ‘ ’)
//这有个问题一直弄不明白,为什么用‘ ’的时候,无法结束呢???翻了翻C++ primer发现cin>>读取时,
//忽略开头所有的空白字符,如空格,换行符,tab等,直到再遇到空白字符时,读取终止。
T = NULL;
}else {
T = (BiTree) malloc (sizeof (BiTNode));
if (!T) exit(OVERFLOW);
T->data = ch;
CreateBiTreeByPreOrder (T->lchild);
CreateBiTreeByPreOrder (T->rchild);
}
return OK;
}//CreateBiTree
//Visit functor.
Status PrintElement (TElemType e){
std::cout<< e <<std::endl;
return OK;
}
//PreOrderTraverse
int PreOrderTraverse (BiTree &T, Status (*Visit)(TElemType e)){
if (T){
if (Visit (T->data))
if (PreOrderTraverse (T->lchild, Visit))
if (PreOrderTraverse (T->rchild, Visit)) return OK;
return ERROR;
}else return OK;
}
int main(int argc, char *argv[])
{
BiTree tree;
CreateBiTreeByPreOrder (tree);
PreOrderTraverse (tree, PrintElement);
system("PAUSE");
return EXIT_SUCCESS;
}
分享到:
相关推荐
数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程...
(1)输入字符序列,建立二叉链表。 (2)先序、中序、后序遍历二叉树:递归算法。 (3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。 (4)求二叉树的高度 。 (5)求二叉树的叶子个数。 ...
本压缩包包含的资源主要涉及二叉树的建立和查找操作,这对于理解和实践数据结构的学习至关重要。 二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。这种结构允许快速进行...
二叉树的建立与遍历 二叉树是一种重要的数据结构,它广泛应用于计算机科学和软件工程中。在这篇文章中,我们将讨论二叉树的建立和遍历,包括先序遍历、中序遍历和后序遍历。 一、数据结构的重要性 数据结构是...
本文将详细讲解C语言中如何建立和遍历二叉树。 首先,我们需要理解二叉树的基本概念。二叉树是由n(n>=0)个有限节点组成的一个有穷集合,这些节点满足以下条件: 1. 有且仅有一个特定的称为根(root)的节点。 2....
C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例...
本次实验让我们深入了解了二叉树的建立和基本应用,并且学会了如何解决实际问题。这些知识将有助于我们更好地理解和应用二叉树,并且有助于我们解决实际问题。 二叉树的建立: 二叉树的建立是指根据给定的数据构建...
/*********************************************************** ***********************************************************/ void preorder1(bitree *root) { bitree *p,*s[100]; int top=0;...
10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 10个数据结构课程设计实例...
建立二叉树,实现二叉树的先序、中序、后序的递归遍历算法,输出遍历结果。 实现二叉树的先序、中序、后序和层次遍历的非递归算法,输出遍历结果。
二叉树的建立、遍历和线索化 二叉树是一种基本的数据结构,它广泛应用于计算机科学和信息技术领域。今天,我们将讨论二叉树的建立、遍历和线索化。 二叉树的建立 在建立二叉树之前,我们需要定义二叉树结点类型。...
在C语言中建立二叉树,我们需要定义一个结构体来表示节点,如下所示: ```c typedef struct TreeNode { int data; // 数据域 struct TreeNode* left; // 指向左子节点的指针 struct TreeNode* right; // 指向右...
基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 ...
C实现二叉树的建立及先中后序的遍历,控制台程序,在各版本vs上均可运行
二叉树是一种重要的数据结构,它由节点组成,每个节点有两...总之,二叉树的建立和遍历是计算机科学基础中的关键概念,它们在许多实际问题中都有广泛应用。理解和掌握这些知识对于学习更高级的数据结构和算法至关重要。
中序线索二叉树(建立二叉树,线索化,输出二叉树)
二叉树的建立与遍历,包括二叉树的定义,有参和无参,前序,中序,后序的遍历。
大型二叉树建立与遍历系统\大型二叉树建立与遍历系统.
"线索二叉树的建立、删除、插入、恢复线索" 线索二叉树是一种特殊的二叉树,它的每个结点都带有指向其前驱和后继结点的指针,这些指针称为线索。线索二叉树可以分为前序线索二叉树、中序线索二叉树和后序线索二叉树...