【数据结构】——树及转换

来源:互联网 发布:孕妇食谱软件 编辑:程序博客网 时间:2024/05/14 03:49


是什么

    树是n个结点的有限集合,树的定义是递归的,表明了树本身的固有特性,也就是一棵树由若干棵子树构成,而子树又由更小的子树构成......

如:


    每棵树有且仅有一个根结点,其它结点又是若干树,但都是根结点的子树。


需了解的概念

    结点的度:一个结点的子树的个数

    叶子结点:度为0的结点

    内部结点:度非0的结点

    结点层次:根为一层,根的孩子为第二层,依此类推

    树的高度:树中最大的层次


遍历

   



转换*

    树-->二叉树

       一句话总结:将树的兄弟结点转为右孩子结点

具体步骤:

        (1)加线。就是在所有兄弟结点之间加一条连线; 

        (2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线;  

        (3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。



    同理,二叉树-->树,就是将所有右孩子结点转为兄弟结点.

    森林-->二叉树

       一句话总结:将每棵树转为二叉树,后一棵根结点为前一棵二叉树的右孩子结点.

具体步骤:

        (1)先把每棵树转换为二叉树;  

        (2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子结点,用线连接起来。当所有的二叉树连接起来后得到的二叉树就是由森林转换得到的二叉树。



总结:

    其递归的思想在算法中很受欢迎.回溯法就利用树存储及其思想阐述的。另外,查找和排序中也利用到了树的存储结构及思想,如:堆排序......

0 0
原创粉丝点击