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

发布时间:2021-06-09

2010数据结构实验指导书48

void setVal (const Object& e) { it = e; }

inline BinaryNode<Object>* left() const { return lc; } void setLeft(BinaryNode<Object>* b) { lc = (BinNode*)b; } inline BinaryNode<Object>* right() const { return rc; } void setRight(BinaryNode<Object>* b) { rc = (BinNode*)b; } bool isLeaf() { return (lc == NULL) && (rc == NULL); } };

生成二叉树

根据不同的应用规则可以有各种生成二叉树的方法,如二叉搜索树、表达式树、哈夫曼树等。我们在这里描述一个根据对二叉树各节点遍历所得序列生成二叉树的方法,一般从这样一个序列不一定能生成这棵二叉树。但如果把这二叉树的所有空指针都画出来就得到一棵满的「扩充」的树,根据对这棵「扩充树」的遍历得到的序列,可以生成那棵二叉树。例如,用'@'表示空指针,那么课题一图中那棵「扩充」二叉树的先序遍历得到的节点序列是:

char *extendedPreOrd = "ABD@F@@EG@@H@@C@@"; 用它做为下列二叉树建造函数的输入就得到前图所示的树。 BinNode<char> *BinTreeBuildFrmStr(char *& str) { }

注:把这个函数的参数类型由对二叉树节点指针的引用改为指向指针的指针,很容易把它改为C的函数。

if (*str != '@'){ }

BinNode<char>* root = new BinNode<char>(*str++); root->setLeft(BinTreeBuildFrmStr (str)); root->setRight(BinTreeBuildFrmStr (str)); return root; }

// the NULL pointer '@', just skip it str++; return NULL;

else{

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

精彩图片

热门精选

大家正在看

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

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

支付方式:

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

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