zoukankan      html  css  js  c++  java
  • 二叉树与汉诺塔

    二叉树与汉诺塔

    前言

    去年考研学习过程中,看过郝斌的数据结构入门(讲的挺好的),当时看过二叉树的遍历时,发现,其实汉诺塔的移动轨迹可以表示为二叉树的中序遍历路径,当时一直想写文章记下来,,然后拖到现在。

    二叉树

    数据结构中的一种,每个结点最多有两个子结点的树结构。其中左子结点下面的子树为左子树,右子点结点的为右子树。
    二叉树.png
    二叉树的遍历是按照一定规则不重复的走遍所有结点。中序遍历作为二叉树的遍历方式之一,这个过程是递归形式,其规则为:

    1. 中序遍历左子树
    2. 访问根节点
    3. 中序遍历右子树

    如上图的遍历顺序为CBDAFEG

    汉诺塔

    汉诺塔之前写过可以去看https://www.jianshu.com/p/e7b1e2b772d5
    )

    这里玩汉诺塔的三步可以和中序遍历的三步对比。
    1.【将n-1个圆盘从a移到】 ----> 【中序遍历左子树】[n-1(a)->b]
    2.【将第n个圆盘移到c上】----> 【访问根节点】[N(a)->c]
    3.【将n-1个圆盘从b移到c】---> 【中序遍历右子树】[n-1(b)->c]

    举个例子:
    image.png
    将上图的a上的四个方块移到c上的移动路径就可以表示为二叉树:
    image.png
    这个二叉树按照中序遍历为: AIBJHLKMCFDOERN, 依次移动就可以将a上的四个移动到c上了。

  • 相关阅读:
    sql round
    COJ1086 分组01背包
    POJ3624 (01背包)
    COJ1271 Brackets Sequence
    nacoskubernet集群安装(离线安装)
    docker离线安装及本地yum配置
    rediskubernet集群离线安装
    mysql修改密码
    harbor离线安装
    ansibletidb3.0安装(离线版)
  • 原文地址:https://www.cnblogs.com/huanping/p/12595827.html
Copyright © 2011-2022 走看看