美文网首页数据结构
数据结构重学日记(十八)二叉树先序遍历

数据结构重学日记(十八)二叉树先序遍历

作者: 南瓜方糖 | 来源:发表于2019-01-21 22:26 被阅读0次

概念

二叉树的遍历,是指从根结点出发,按某种次序依次访问树中的每个结点,使得每个结点均 被访问一次,而且仅被访问一次

二叉树的遍历又分为先序遍历、中序遍历、后序遍历和层次遍历。

先序、中序和后序又可以分为递归和非递归。

这里先来实现下先序遍历。

先序遍历递归

如果二叉树为空,什么也不做,否则:

  • 先访问根结点
  • 先序遍历左子树
  • 先序遍历右子树

即从上到下、从左到右。

二叉树

以上图的树为例:

遍历顺序为:
A -> B -> D -> G -> C -> E -> F

在代码中,当遇到 # 号时将对应树置为空,所以输入时直接输入一下字符串:
ABD#G###CE##F##


bool created_tree(BiTree *T) {
    char ch;
    scanf("%c", &ch);
    if (ch == '#') {
        *T = NULL;
    } else {
        BiTree p = (BiTree) malloc(sizeof(BiNode));
        if (T == NULL) {
            printf("创建节点失败,无法分配可用内存...");
            exit(-1);
        } else {
            p->data = ch;
            *T = p;
            created_tree(&p->lchild);
            created_tree(&p->rchild);
        }
    }
    return true;
}


void foreach_tree(BiTree T) {
    if (T != NULL) {
        printf("%c ", T->data);
        foreach_tree(T->lchild);
        foreach_tree(T->rchild);
    }
    printf("\r\n\r\n");

}

本来是想把几种遍历都做一遍,但是太困了,眼睁不开,遍历创建也卡了很久才弄出来,还是先只做一个吧,明天看状态再继续往下做。

我要睡了。

相关文章

  • 算法学习

    ### 实现二叉树以及二叉树遍历数据结构递归比较重要 1.先序遍历 先序遍历,就是先遍历根节点然后再遍历左子树,最...

  • 数据结构之二叉树

    数据结构之二叉树 本文讲解二叉树的基本操作: 查找节点 计算树的高度 清空树 递归遍历:先序遍历、中序遍历、后序遍...

  • 数据结构第12讲 二叉树的层次遍历

    数据结构第12讲 二叉树的层次遍历 二叉树的遍历一般有先序遍历、中序遍历和后序遍历,这三种遍历比较简单。今天我们讲...

  • py下的二叉树

    原理: 二叉树的先序遍历、后序遍历、中序遍历。。。 代码: 一、py原生数据结构硬实现: 运行一下: 运行结果: ...

  • 遍历二叉树

    创建二叉树数据结构: 深度优先遍历和广度优先遍历 前序遍历:先遍历根结点,然后左子树,再右子树中序遍历:先遍历左子...

  • 数据结构重学日记(十八)二叉树先序遍历

    概念 二叉树的遍历,是指从根结点出发,按某种次序依次访问树中的每个结点,使得每个结点均 被访问一次,而且仅被访问一...

  • 二叉树遍历(IFE题目)

    二叉树的遍历 今天的题目是模拟对二叉树的遍历,大二本来就学过数据结构这一门课,先序遍历、中序遍历以及后序遍历理解起...

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 二叉树的遍历(完结)

    二叉树的三种常用遍历方式 学习过数据结构的同学都清楚,除了层序遍历外,二叉树主要有三种遍历方式: 1. 先序遍历...

  • Python实现深度优先与广度优先

    二叉树的两种遍历是数据结构的经典考察题目, 广度遍历考察队列结构, 深度遍历考察递归 二叉树 深度优先 先序遍历(...

网友评论

    本文标题:数据结构重学日记(十八)二叉树先序遍历

    本文链接:https://www.haomeiwen.com/subject/ibshjqtx.html