删除子树实验报告总结(共1篇)
篇1:删除子树实验报告总结
一 实验目的和要求
理解二叉树的基本概念,熟练使用多种表示法构造二叉树,掌握采用二叉链表存储结构实现二叉树的构造、遍历、插入、删除等操作算法;理解线索二叉树的作用,掌握获得线索二叉树节点在指定遍历次序下的前驱或后继结点的方法;理解哈弗曼编码和哈弗曼树的作用,掌握由指定文本求得哈弗曼编码的方法。
理解树的基本概念,熟悉树的多种存储结构,掌握采用孩子兄弟链表存储结构实现树的遍历、插入、删除等操作算法。
通过研究树和二叉树,深刻理解链式存储结构用于表达非线性结构的作用,掌握采用递归算法实现递归数据结构基本操作的设计方法。二 题目及题意分析
题目:删除以P的第I个孩子为根的子树。
分析:用孩子兄弟链表构造一棵树,将树转化成二叉树,由根的sibling链将若干棵树连接成一棵二叉树,构造removechild(TreeNode
源程序如下: Treenode.h
template
结点类 { public:
T data;
TreeNode
TreeNode(T data)
{
this->data=data;
this->child=this->sibling=NULL;
} };Tree.h #include
TreeNode
Tree();
TreeNode
friend ostream&operator<<(ostream&out,Tree
输出流
void removechild(TreeNode
删除子树函数
private:
void preOrder(TreeNode
void destroy(TreeNode
释放
};template
{ TreeNode
q=new TreeNode
if(p->child==NULL)
p->child=q;
else
{
p=p->child;
while(p->sibling!=NULL)
p=p->sibling;
p->sibling=q;
} }
return q;} template
输出 { if(p!=NULL)
插入结点
{
for(int j=0;j
cout<<“t”;
cout<
data< preOrder(p->child,i+1); preOrder(p->sibling,i); } } template destroy(p->child); destroy(p->sibling); delete p;} } template void Tree { if(p==NULL||i==0) cout<<“参数错误”< 溢出错 else { TreeNode 头子树删除 if(i==1) { temp=p->child; p->child=p->child->sibling; destroy(temp->child); delete temp; } else { p=p->child; for(int j=1;j { temp=p; 记住前一个结点 p=p->sibling; } destroy(p->child); temp->sibling=temp->sibling->sibling; 删除子树 链接 delete p; } } } 主函数 #include“Tree.h” int main(){ Tree tree.insertchild(tree.root,“北京”);tree.insertchild(tree.root,“上海”);TreeNode TreeNode cout< 调用 cout< } 四 运行结果及分析 1删除第一个子树 中国 北京 上海 江苏省 南京市 苏州市 浙江省 杭州市 宁波市 河南省 郑州市 构造一棵树 新乡市 中国 上海 江苏省 南京市 苏州市 浙江省 杭州市 宁波市 河南省 郑州市 新乡市 Press any key to continue 2 删除中间子树 中国 北京 上海 江苏省 南京市 苏州市 浙江省 杭州市 宁波市 河南省 郑州市 新乡市 中国 北京 上海 江苏省 南京市 苏州市 河南省 郑州市 新乡市 Press any key to continue 3 p为空时 中国 北京 上海 江苏省 南京市 苏州市 浙江省 杭州市 宁波市 河南省 郑州市 新乡市 参数错误 Press any key to continue 结果分析:构造一棵树,调用函数removechild,给定不同的指针及i值运行结果正确,删除成功,考虑p为空及i超出范围,溢出错。 五 实验总结 通过实验理解了树及二叉树的存储结构熟悉掌握了孩子兄弟链表的存储结构实现,以及遍历、查找、删除等操作,深刻理解实现链式存储结构表达非线性的树存储结构。 【删除子树实验报告总结】相关文章: 形容椰子树的词语07-21 行香子树绕村庄教案05-11 家乡的椰子树小学生作文04-14 椰子树说明文中学生作文04-26 手机恢复删除短信07-14 寒假作文(短期删除)04-22 Excel怎么删除重复行?Excel重复行删除方法excel办公/数码05-05 安卓手机删除短信恢复10-06 飞信(Fetion)添加、删除好友04-20 删除多余的DLL文件04-29