{{format('0')}} {{format('796')}} {{format('2551')}}

【数据结构与算法】二叉树遍历 [ 编程杂谈 ]

大数据男孩 文章 正文

想做一个技术博客,奈何实力不够
分享

明妃

{{nature("2022-08-14 17:23:19")}}更新

二叉树的遍历

因为使用二叉树最多链式存储结构,所遍历的方式也是按照链式结构来的。

遍历的宗旨

在遍历是按照某种次序依次访问二叉树的所有节点,并且每个节点仅仅 被访问一次

前序遍历(根左右)

遍历顺序 ABDHIEJCFKG

[mark]()

中序遍历(左根右)

遍历顺序 HDIBEJAFKCG

[mark]()

后序遍历(左右根)

遍历顺序 HIDJEBKFGC

[mark]()

层序遍历

遍历顺序 ABCDEFGHIJK

[mark]()

二叉树代码实现

前序遍历(根左右)

二叉树的遍历方式,在创建二叉树时就确定好了

#include <stdio.h>
#include <stdlib.h>

typedef char ElemType;

// 二叉树结构
typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,*rchild;
} BiTNode, *BiTree;

// 创建二叉树 按照用户遵循的 前序遍历的(根左右) 方式输入数据
void createBiTree(BiTree *T){
    char c;
    printf("输入元素:");
    scanf("%c",&c);
    getchar();
    if (c == '#'){
        *T = NULL;
    } else{
        *T = (BiTree)malloc(sizeof(BiTNode));
        (*T)->data = c;
        createBiTree(&(*T)->lchild); // 先创建左子节点
        createBiTree(&(*T)->rchild); // 再创建右子节点
    }
}

// 遍历二叉树
void preOrderTraverse(BiTree T,int level){
    if(T!=NULL){
        printf("数据 %c 在第 %d 层\n", T->data, level);
        preOrderTraverse(T->lchild,level+1);
        preOrderTraverse(T->rchild,level+1);
    }
}

int main(){
    int level = 1;
    BiTNode *T;

    createBiTree(&T);
    preOrderTraverse(T,level);

    return 0;
}

输入顺序

[mark]()

中序遍历(左根右)

输入方式还是前序的输入方式,只是遍历的打印位置修改了一下

// 中序遍历二叉树
void preOrderTraverse(BiTree T,int level){
    if(T!=NULL){
        preOrderTraverse(T->lchild,level+1);
        printf("数据 %c 在第 %d 层\n", T->data, level);
        preOrderTraverse(T->rchild,level+1);
    }
}

[mark]()

后序遍历(左右后)

输入方式还是前序的输入方式,只是遍历的打印位置修改了一下

// 后序遍历二叉树
void preOrderTraverse(BiTree T,int level){
    if(T!=NULL){
        preOrderTraverse(T->lchild,level+1);
        preOrderTraverse(T->rchild,level+1);
        printf("数据 %c 在第 %d 层\n", T->data, level);
    }
}

[mark]()

评论 0
0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}
TOP 2
Spark 2.0 单机模式与集群模式 安装

{{nature('2020-01-02 16:47:07')}} {{format('12523')}}人已阅读

TOP 3
Office 2016 Pro Plus 激活

{{nature('2019-12-11 20:43:10')}} {{format('9410')}}人已阅读

TOP 4
Linux上 MySQL 开启远程登陆的两种方法

{{nature('2019-12-26 17:20:52')}} {{format('7405')}}人已阅读

TOP 5
Linux 安装 MySQL 5.7

{{nature('2019-12-26 16:03:55')}} {{format('4880')}}人已阅读

目录

标签云

数据结构与算法 二叉树

一言

# {{hitokoto.data.from || '来自'}} #
{{hitokoto.data.hitokoto || '内容'}}
作者:{{hitokoto.data.from_who || '作者'}}
自定义UI
配色方案

侧边栏