zoukankan      html  css  js  c++  java
  • 树、森林与二叉树的转换

    1.树转换为二叉树

      1)在兄弟节点之间加一条连线

      2)对每个节点,只保留它与第一个孩子的连线,与其他孩子的连线全部擦掉

      3)以树根为轴心,顺时针旋转45度

    2.森林转换为二叉树

      1)将森林中的每棵树转换为相应的二叉树

      2)每棵树的根也可以视为兄弟关系,在每棵树的根之间加一根连线

      3)以第一棵树的根为轴心顺时针旋转45度

    3

      1)若某结点的左孩子结点存在,将左孩子结点的右孩子结点、右孩子结点的右孩子结点……都作为该结点的孩子结点,

        将该结点与这些右孩子结点用线连接起来;

      2)删除原二叉树中所有结点与其右孩子结点的连线;
      3)整理(1)和(2)两步得到的树,使之结构层次分明

    4.二叉树转换为森林

      1)若二叉树非空,则二叉树的根及其左子树为第一棵树的二叉树形式,故将根的右链断开

      2)二叉树根的右子树可视为一个由除第一棵树外的森林转换后的二叉树,应用1)同样的方法,直到只剩一颗没有右子树的二叉树为止,  

        最后再将每棵二叉树依次转换为树就得到了原始森林

  • 相关阅读:
    HDU 1251 统计难题(字典树模板题)
    POJ 1182 食物链(带权并查集)
    FJUT 2351 T^T的图论(并查集)
    10.QT程序框架与connect
    9.正则表达式
    8.QList QMap QVariant
    7.treeview
    6.图形化列表查询显示
    5.listview(QStringList QStringListModel)
    4.QList
  • 原文地址:https://www.cnblogs.com/-slz-2/p/13547192.html
Copyright © 2011-2022 走看看