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)同样的方法,直到只剩一颗没有右子树的二叉树为止,  

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

  • 相关阅读:
    [c++ 11x rvalue reference]
    Exception Cost
    How to set NoStepInto for VS debugging
    STL算法find_if和find
    [转载]The Biggest Changes in C++11 (and Why You Should Care)
    QT信号和槽
    读《构建之法》前三章有感
    复利计算器(3)——数据库
    《构建之法》——第四章
    操作系统命令行解释
  • 原文地址:https://www.cnblogs.com/-slz-2/p/13547192.html
Copyright © 2011-2022 走看看