码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的遍历

时间:2018-04-05 14:34:36      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:span   element   bool   blog   tree   对象   类型   bsp   src   

二叉树的定义

类型名称:二叉树

数据对象集:一个有穷的结点集合。若不为空,则有根结点和其左、右二叉子树组成。

操作集:BT∈BinTree, Item∈ElementType,重要操作有:

1、Boolean IsEmpty(BinTree BT):判别BT是否为空

2、void Traversal(BinTree BT):遍历,按某顺序访问每个结点

3、BinTree CreateBinTree():创建一个二叉树

常用的遍历方法有:

void PreOrderTraversal(BinTree BT):先序----根、左子树、右子树

void InOrderTraversal(BinTree BT):中序----左子树、根、右子树

void PostOrderTraversal(BinTree BT):后序---左子树、右子树、根

void LevelOrderTraversal(BinTree BT):层次遍历,从上到下、从左到右

 

二叉树的遍历

(1)先序遍历

遍历过程为:

①访问根结点;

②先序遍历其左子树;

③先序遍历其右子树。

void PreOrderTraversal(BinTree BT)
{
    if(BT) {
        printf("%d", BT->Data);
        PreOrderTraversal(BT->Left);
        PreOrderTraversal(BT->Right);
    }
}

技术分享图片

 

(2)中序遍历

遍历过程为:

①中序遍历其左子树;

②访问根结点;

③中序遍历其右字树。

void InOrderTraversal(BinTree BT)
{
    if(BT) {
        InOrderTraversal(BT->Left);
        printf("%d", BT->Data);
        InOrderTraversal(BT->Right);
    }
}

技术分享图片

 

(3)后序遍历

遍历过程为:

①后序遍历其左子树

②后序遍历其右子树

③访问根结点

void PostOrderTraversal(BinTree BT)
{
    if(BT) {
        PostOrderTraversal(BT->Left);
        PostOrderTraversal(BT->Right);
        printf("%d", BT->Data);
    }
}

技术分享图片

 

先序、中序、后序遍历过程:遍历过程中经过结点的路线一样,只是各结点的时机不同。

图中在从入口到出口的曲线上用三种符号分别标记了先序、中序和后序访问各结点的时刻。

技术分享图片

 

二叉树的遍历

标签:span   element   bool   blog   tree   对象   类型   bsp   src   

原文地址:https://www.cnblogs.com/ch122633/p/8722091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!