第五章小结

Posted liuyuany

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章小结相关的知识,希望对你有一定的参考价值。

第五章学习了二叉树:每个结点至多只有两颗子树,且子树有左右之分。

二叉树的遍历:几乎所有操作建立在遍历的基础上,利用递归完成二叉树前(根)序,中(根)序,后(根)序遍历。

 

技术图片
void PreOrderTraverse(BiTree T)
{
  If( T )//若二叉树非空
{
  cout<<T->data;//访问根结点
  PreOrderTraverse( T->lchild );//先序遍历左子树
  PreOrderTraverse( T->rchild );//先序遍历左子树
}
View Code//先序

 

技术图片
void InOrderTraverse(BiTree T)
{
  If( T )//若二叉树非空
{
  InOrderTraverse( T->lchild );//中序遍历左子树
  cout<<T->data;//访问根结点
  InOrderTraverse( T->rchild );//中序遍历左子树
}
View Code//中序
技术图片
void PostOrderTraverse(BiTree T)
{
  If(T)//若二叉树非空
{
  PostOrderTraverse( T->lchild );//后序遍历左子树
  PostOrderTraverse( T->rchild );//后序遍历左子树
  cout<<T->data;//访问根结点
}
View Code//后序
技术图片
/*typedef struct{
    char name;
    int lch;
    int rch;
}node;*/二叉树的定义

void levelOrderTraverse(node t[], int x)
{//层次遍历t[x]为根结点的树t
    int tmp;
    queue<int> q;
    q.push(x); //根结点所在下标入栈 
    
    while(!q.empty()){
        tmp = q.front(); 
        q.pop();
        if(tmp!=-1){
            cout << t[tmp].name << " ";
            q.push(t[tmp].lch);
            q.push(t[tmp].rch);
        }
    } 
}
View Code//利用队列层次遍历

其次我们了解了建立哈夫曼树原理,为之后的算法打基础。

树的遍历还需要熟悉,并且要针对不同问题进行改进。打代码能力,逻辑思维能力继续加强。

 

以上是关于第五章小结的主要内容,如果未能解决你的问题,请参考以下文章

数据结构:第五章学习小结

数据结构:第五章学习小结

第五章学习小结

数据结构第五章学习小结

数据结构第五章学习小结

第五章小结