必威体育Betway必威体育官网
当前位置:首页 > IT技术

二叉树遍历(图解)

时间:2019-07-12 00:43:16来源:IT技术作者:seo实验室小编阅读:60次「手机版」
 

二叉树遍历

二叉树的顺序存储结构就是用一维数组存储二叉树中的节点,并且节点的存储位置,也就是数组的下标要能体现节点之间的逻辑关系。—–>一般只用于完全二叉树 

链式存储—–>二叉链表 

定义: lchild | data | rchild(两个指针域,一个数据域)

typedef struct Node {
     ElemType data;
     struct Node *lchild, *rchild;
}BiTnode,* BiTree;

注意点: 

1)已知 前序遍历序列 和 中序遍历序列可以唯一确定一颗二叉树 

2)已知 中序遍历序列和 后序遍历序列可以唯一确定一颗二叉树 

而已知 前序和后序 是不能确定一颗二叉树的

二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树中的所有节点,使得每个节点被访问一次且仅被访问一次。

1、前序遍历:根-左-右 

这里写图片描述

代码

void Preorder(BiTree T) /*先序遍历: 根-左-右*/
{
    if(T != NULL)
    {
        Visit(T);   /*访问根节点*/
        PreOrder(T->lchild);  /*访问左子节点*/
        PreOrder(T->rchild);  /*访问右子节点*/
    }
}

2、中序遍历:左-根-右 

这里写图片描述

代码:

void InOrder(BiTree T)/*中序遍历:左-根-右*/
{
    if(T != NULL)
    {
        InOrder(T->lchild);  //左
        Visit(T);            //根
        InOrder(T->rchild);  //右
    }
}

3、后序遍历:左-右-根 

这里写图片描述

代码:

void PostOrder(BiTree T)/*后序遍历:左-右-根*/
{
    if(T != NULL)
    {
        PostOrder(T->lchild);  //左
        PostOrder(T->rchild);  //右
        Visit(T);              //根
    }
}

4、层序遍历:从根节点出发,依次访问左右孩子结点,再从左右孩子出发,依次它们的孩子结点,直到节点访问完毕 

这里写图片描述

代码:该程序用到了队列的思想,可以参考下图理解 

(该图为展示的是 图的广度优先遍历示意图,应用的就是层序遍历的思想

/*层序遍历 思路:按从左至右的顺序来逐层访问每个节点,层序遍历的过程需要队列*/
void LevelOrder(BiTree T)
{
    BiTree p = T;

    queue<BiTree> queue;         /*队列*/
    queue.push(p);               /*根节点入队*/

    while(!queue.empty())        /*队列不空循环 */
    {
        p = queue.front();       /*对头元素出队*/
        //printf("%c ",p->data); /*访问p指向的结点*/
        cout << p->data << " ";

        queue.pop();             /*退出队列*/
        if(p->lchild != NULL){   /*左子树不空,将左子树入队*/
            queue.push(p->lchild);
        }
        if(p->rchild != NULL){   /*右子树不空,将右子树入队*/
            queue.push(p->rchild);
        }
    }
}

这里写图片描述

相关阅读

图解谷歌地球使用入门、谷歌地球COM API 开发入门、谷

一 谷歌地球概述 谷歌地球(Google Earth,GE)是一款谷歌公司开发的虚拟地球仪软件,它把卫星照片、航空照相和GIS布置在一个地球的三维

478主板CPU供电图解

  cpu供电电路主要由电源管理芯片、场效应管、电感、滤波电容等组成   跑线路过程如下:   电源12V经过电感和滤波电容到达

开盘八法图解

五、开盘解盘八诀     1、跳空倍数法则     早盘高开或低开超过5个点的时候,如果在10:30还没回补缺口,则通常全天最大跌幅是第

SQL Server2000安装教程图解

sql2000安装教程图解、、、 =================================第一部分:下载所需要的安装包:可以自己在网上百度了之后下载--或是

打开MSDTC的方法(图解)

最近在做一个项目的时候使用了一下.net中的System.Transactions(分布式事务),当项目开发完成以后,在布置的时候遇到了msdtc的问题,在查

分享到:

栏目导航

推荐阅读

热门阅读