第五章学习小结
1,本章学习的二叉树为我打开了一个新的世界,与之前一对一的数据结构相比,一对多的存储结构二叉树更加灵活和方便,也更加的有趣。
树是以分支关系确定的层次机构,在树结构中,二叉树最为常用,满二叉树和完全二叉树是两种特殊形态的二叉树,完全二叉树仅适用于顺序存储结构,一般的二叉树更适合链式存储结构(又称为二叉链表)。
二叉树的遍历是最基础的算法,基于二叉树的递归定义,遍历二叉树的递归算法可分为先序遍历,中序遍历和后序遍历。
中序遍历的递归算法:
void InOrder(BiTree T)
{
if(T!=NULL)
{
InOrder(T->lchild); // 中序遍历左子树
cout << T->data; // 访问根结点
InOrder(T->rchild); // 中序遍历右子树
}
}
改变输出语句的顺序,即可实现先序和后序遍历的算法
另,可利用栈将递归算法改写成非递归算法
由二叉树的先序序列和中序序列,或由其后序序列和中序序列均能唯一地确定一颗二叉树
树的存储结构
(1)双亲表示法:易求双亲,易求根,但求结点的孩子需遍历整个结构
(2)孩子表示法
(3)孩子兄弟表示法:便于将一般的树结构转换为二叉树进行处理,较普遍
森林的遍历算法: 先序遍历和中序遍历
哈夫曼树
2.学习心得:本章的作业和实践都有视频可以学习,老师的讲解丰富了课本知识,拓宽了学习内容,使我获益匪浅,在提交作业后我有按照自己的理解复现代码,在自己动手的过程中,进一步加深了对知识的理解,相比前几章掌握得要好一点
3.学习目标:勤于动手,学以致用