`

二叉树的建立问题

 
阅读更多

#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.
//相当于值传递,这里应该用二级指针. 具体可参考:http://bbs.csdn.net/topics/390086990
    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;
}

分享到:
评论

相关推荐

    数据结构课程设计实例二叉树建立.rar

    数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程设计实例二叉树建立 数据结构课程...

    二叉树建立 二叉树基本算法的实现

    (1)输入字符序列,建立二叉链表。 (2)先序、中序、后序遍历二叉树:递归算法。 (3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。 (4)求二叉树的高度 。 (5)求二叉树的叶子个数。 ...

    二叉树建立和查找 数据结构

    本压缩包包含的资源主要涉及二叉树的建立和查找操作,这对于理解和实践数据结构的学习至关重要。 二叉树是一种特殊的树形数据结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。这种结构允许快速进行...

    二叉树的建立与遍历

    二叉树的建立与遍历 二叉树是一种重要的数据结构,它广泛应用于计算机科学和软件工程中。在这篇文章中,我们将讨论二叉树的建立和遍历,包括先序遍历、中序遍历和后序遍历。 一、数据结构的重要性 数据结构是...

    C语言二叉树的建立和遍历

    本文将详细讲解C语言中如何建立和遍历二叉树。 首先,我们需要理解二叉树的基本概念。二叉树是由n(n&gt;=0)个有限节点组成的一个有穷集合,这些节点满足以下条件: 1. 有且仅有一个特定的称为根(root)的节点。 2....

    C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.zip

    C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 C语言数据结构课程设计实例...

    二叉树的建立与基本应用

    本次实验让我们深入了解了二叉树的建立和基本应用,并且学会了如何解决实际问题。这些知识将有助于我们更好地理解和应用二叉树,并且有助于我们解决实际问题。 二叉树的建立: 二叉树的建立是指根据给定的数据构建...

    二叉树建立-二叉树建立-二叉树建立-二叉树建立-二叉树建立-二叉树建立

    /*********************************************************** ***********************************************************/ void preorder1(bitree *root) { bitree *p,*s[100]; int top=0;...

    10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等

    10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 10个数据结构课程设计实例...

    二叉树建立及遍历算法实现

    建立二叉树,实现二叉树的先序、中序、后序的递归遍历算法,输出遍历结果。 实现二叉树的先序、中序、后序和层次遍历的非递归算法,输出遍历结果。

    二叉树的建立遍历以及线索化二叉树

    二叉树的建立、遍历和线索化 二叉树是一种基本的数据结构,它广泛应用于计算机科学和信息技术领域。今天,我们将讨论二叉树的建立、遍历和线索化。 二叉树的建立 在建立二叉树之前,我们需要定义二叉树结点类型。...

    二叉树建立以及递归、非递归遍历

    在C语言中建立二叉树,我们需要定义一个结构体来表示节点,如下所示: ```c typedef struct TreeNode { int data; // 数据域 struct TreeNode* left; // 指向左子节点的指针 struct TreeNode* right; // 指向右...

    基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等

    基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 基于c语言10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等 ...

    二叉树建立及其遍历

    C实现二叉树的建立及先中后序的遍历,控制台程序,在各版本vs上均可运行

    二叉树建立遍历

    二叉树是一种重要的数据结构,它由节点组成,每个节点有两...总之,二叉树的建立和遍历是计算机科学基础中的关键概念,它们在许多实际问题中都有广泛应用。理解和掌握这些知识对于学习更高级的数据结构和算法至关重要。

    中序线索二叉树(建立二叉树,线索化,输出二叉树)

    中序线索二叉树(建立二叉树,线索化,输出二叉树)

    二叉树建立与遍历

    二叉树的建立与遍历,包括二叉树的定义,有参和无参,前序,中序,后序的遍历。

    数据结构学习文档\大型二叉树建立与遍历系统\312008080605426-冯磊-大型二叉树建立与遍历系统\大型二叉树建立与遍历系统.c

    大型二叉树建立与遍历系统\大型二叉树建立与遍历系统.

    线索二叉树的建立、删除、插入、恢复线索

    "线索二叉树的建立、删除、插入、恢复线索" 线索二叉树是一种特殊的二叉树,它的每个结点都带有指向其前驱和后继结点的指针,这些指针称为线索。线索二叉树可以分为前序线索二叉树、中序线索二叉树和后序线索二叉树...

Global site tag (gtag.js) - Google Analytics