java

位置:IT落伍者 >> java >> 浏览文章

第6章树(算法设计)习题练习


发布日期:2024年04月09日
 
第6章树(算法设计)习题练习

* 二叉树的遍历算法可写为通用形式例如通用的中序遍历为

void Inorder(BinTreeTvoid(* visit)(DataType x)){

if (T){

Inorder(T>lchildVisit);//遍历左子树

Visit(T>data);//通过函数指针调用它所指的函数来访问结点

Inorder(T>rchildVisit);//遍历右子树

}

}

其中Visit是一个函数指针它指向形如void f(DataType x)的函数因此我们可以将访问结点的操作写在函数f中通过调用语句Inorder(rootf)将f的地址传递给Visit来执行遍历操作请写一个打印结点数据的函数通过调用上述算法来完成书中节的中序遍历

以二叉链表为存储结构分别写出求二叉树结点总数及叶子总数的算法

以二叉链表为存储结构分别写出求二叉树高度及宽度的算法所谓宽度是指二叉树的各层上具有结点数最多的那一层上的结点总数

以二叉链表为存储结构 写一算法交换各结点的左右子树

以二叉链表为存储结构写一个拷贝二叉树的算法void CopyTree(BinTree root BinTree *newroot)其中新树的结点是动态申请的为什么newroot要说明为BinTree型指针的指针?

以二叉链表为存储结构分别写出在二叉树中查找值为x的结点及求x所在结点在树中层数的算法

一棵n个结点的完全二叉树以向量作为存储结构试写一非递归算法实现对该树的前序遍历

以二叉链表为存储结构一算法对二叉树进行层次遍历(层次遍历的定义见)提示应使用队列来保存各层的结点

以二叉链表为存储结构写一算法用括号形式(key LTRT)打印二叉树其中key是根结点数据LT和RT是括号形式的左子树和右子树并且要求空树不打印任何信息一个结点x的树的打印形式是x而不是(x)的形式

以线索链表作为存储结构分别写出在前序线索树中查找给定结点*p的前序后继以及在后序线索树中查找 *p的后序前趋的算法

完成节算法CreatHuffmanTree中调用的三个函数InitHuffmanTreeInputWeight 和SelectMin

分别写出对文件进行哈夫曼编码的算法以及对已编码文件进行解码的算法为简单起见可以假设文件是存放在一个字符向量中

具体参见严蔚敏吴伟民的《数据结构》第二版

上一篇:第 1 章 贪婪算法

下一篇:贪婪算法思想