森林 Forest

一、定义:

       n >= 0个互不相交的树的集合。

二、森林的相关操作:

     1、森林转换为二叉树:

           如果T1,……,Tn是一个森林,则对应于该森林的二叉树记为B(T1,……,Tn);

          (1)若n = 0,为空

          (2)根为森林中第一棵树T1的根;

                     左子树是B(T11,T12,……,T1m),其中T11,T12,……,T1m是T1根的所有子树;

                    右子树是B(T2,……,Tn)。

     2、森林F的遍历:

           (1)前序遍历森林

                    1)如果F为空,则返回

                    2)访问F的第一棵树的根结点

                    3)按前序顺序遍历第一棵树的全部子树

                    4)按前序顺序遍历F的其余的树

           (2)中序遍历森林

                    1)如果F为空,则返回

                    2)按中序遍历第一棵树的全部子树

                    3)访问第一棵树的根结点

                    4)按中序遍历其余的树

           (3)后序遍历森林

                    1)如果F为空,则返回

                    2)按后序遍历F的第一棵树的全部子树

                    3)按后序遍历F的其余的树

                    4)访问F的第一棵树的根结点

三、集合表示

       1、基本概念:

             (1)集合表示:即用树来表示集合

             (2)合并(union):合并两个集合

             (3)查找(find): 查找包含某元素的集合

             (4)退化树(degenerate tree):树单链链接

       2、加权规则:

            (1)作用:避免产生退化树

            (2)定义:union(i,j)如果树i的结点数少于树j的结点数,则令树j是树i的父亲;否则,令树i是树j的父亲。

            (3)需要在树的根结点增加计数域

       3、如果集合T是按加权规则所建立的具有n个结点的树,那么树T中任意结点的层数至多为[logn]下+1。

       4、折叠规则:

            如果j是从i到其根结点的路径上的一个结点,那么将j作为根结点的儿子。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值