1、本章内容小结:本章学习了树与二叉树,主要核心内容是与递归的定义有关,无论是树的概念或者是树的一些操作,基本上都运用到了递归这个知识点。
而二叉树的学习是本章的重点学习内容,对二叉树进行的操作,基本必须先从二叉树的遍历开始。
1、先序遍历
void Pre (BiTree T)//先序遍历
{
if(T!=NULL)
{
cout<<T->data;
Pre (T->lchild);
Pre (T->rchild);
}
}
2、中序遍历
void Pre (BiTree T)//先序遍历
{
if(T!=NULL)
{
Pre (T->lchild);
cout<<T->data;
Pre (T->rchild);
}
}
3、后序遍历
void Pre (BiTree T)//先序遍历
{
if(T!=NULL)
{
Pre (T->lchild);
Pre (T->rchild);
cout<<T->data;
}
}
4、层次遍历
void Pre (BiTree T)//层次遍历
{
Queue *q;
initQueue(q);
if(T!=NULL)
{
enQueue(q,T);
}
while(emptyQueue(q)!=true)
{
cout<<T->data;
if(T->lchild!=NULL)
{
enQueue(q,T->lchild);
}
if(T->rchild!=NULL)
{
enQueue(q,T->rchild);
}
}
}
层次遍历与前面三个遍历类同,但是又多了一个队列的引进,运用到了队列的出队和入队的操作完成层次遍历。
对于二叉树的存储结构:
二叉树还有一些十分重要的性质:
2、遇到的问题与困难:
对于二叉树到数的一个转换,原理是类似的,但可能由于对概念的不熟悉,导致一时之间比较难以转换概念,在解答题目时,遇到的困难比较多,例如在数的结构体中,可能会运用到数组与链表的结合体来进行解答;又或是层次遍历操作中,队列对于孩子结点的一些操作代码难以实现等问题。
3、心得体会:对于二叉树与数的一些概念和操作,老师都在视频中讲解的比较详细,特别是老师的一些代码实现,看了能让人有种顿悟的感觉,通过本章的学习,学习的不仅是二叉树和数,更重要的是对递归这一概念有了更深的理解。
4、下一阶段的目标:希望图能对我友善一点吧!