2010数据结构实验指导书48(11)

发布时间:2021-06-09

2010数据结构实验指导书48

4、根据实验要求设计并完成程序,把理论的基本操作知识转化到实际的实践应用中。

【实验原理】

由于树的定义是递归的,对树的处理原则上也应是用递归的方式。二叉树是一种非常重要的类型。针

对二叉树的操作主要有三种遍历(先序遍历、中序遍历、后序遍历),遍历二叉树是二叉树中各种运算的基础。

【实验要求】(实验课题一必做,课题二、三选做)

实验课题一:将下图中的二叉树用二叉链表表示:

1 用三种遍历算法遍历该二叉树,给出对应的输出结果;

2 写一个函数对二叉树搜索,若给出一个结点,根据其是否属于该树,输出true或者false。 3 写函数完成习题4.31(C++版)或4.28(C版教科书)。

实验课题二:构造表达式树。

可参考教科书§4.2.2(具体规则用C++描述教材的见p.122,用C描述教材的见p.87)。

实验课题3:哈夫曼编码的生成

当哈夫曼树生成后,对由根节点到各叶结点(对应于待编码的符号)的路径作0-1编码就得到相应的哈夫曼编码。任何一棵满二叉树(a full binary tree)都可以看作是一棵哈夫曼树,所以本课题要求:造一棵满二叉树,根据这棵二叉树生成相应的哈夫曼编码。

2010数据结构实验指导书48

附录:二叉树的ADT接口

用C++描述的教科书中没有给出一个二叉树的ADT接口,我们在这里给出一个二叉树类模板,供同学们使用。

// Binary tree node abstract class

template <class Object> class BinaryNode { public:

// Return the node's element virtual Object& val() = 0; // Set the node's element

virtual void setVal(const Object&) = 0; // Return the node's left child virtual BinaryNode* left() const = 0; // Set the node's left child

virtual void setLeft(BinaryNode*) = 0; // Return the node's right child virtual BinaryNode* right() const = 0; // Set the node's right child

virtual void setRight(BinaryNode*) = 0; // Return true iff the node is a leaf virtual bool isLeaf() = 0; };

// Binary tree node class, an implementation of the abstract class BinaryNode template <class Object>

class BinNode : public BinaryNode<Object> { private:

Object it; // The node's value BinNode* lc; // Pointer to left child BinNode* rc; // Pointer to right child public:

// Two constructors -- with and without initial values BinNode() : lc(NULL), rc(NULL) { }

BinNode(Object e, BinNode* l =NULL, BinNode* r =NULL) : it(e), lc(l), rc(r) { }

~BinNode () {} // Destructor Object& val () { return it; }

2010数据结构实验指导书48(11).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219