小蚂蚁学习数据结构(10)——树的基本介绍

树定义

    专业定义

    1,有且只有一个称为根的节点

    2,有若干个互不相交的子树,这些子树本身也是一棵树

   通俗定义

    1,树是有节点和边组成

    2,每个节点只有一个父节点,但可以有多个直接点

    3,但有一个节点例外,该节点没有父节点,此节点称为根节点

    专业术语

        节点    父节点    子节点

        子孙    堂兄弟

        深度:

            从根节点到最底层节点的层数称之为深度

            根节点是第一层

        叶子节点:    

            没有子节点的节点

        非终端节点

            实际就是非叶子节点

        度

            子节点的个数称为度


树的分类

    一般树

    二叉树

    森林


一般树:任意一个节点的子节点的个数都不受限制

二叉树:

    任意一个节点的子节点个数最多两个,且子节点的位置不可更改

    分类:

        一般二叉树

        满二叉树:

            在不增加树的层数的前提下,无法再多添加一个节点的二叉树就是二叉树

        完全二叉树

            如果只是删除满二叉树最底层最右边的连续若干个节点,这样形成的二叉树就是完全二叉树

森林:n个互不相交的树的集合


树的存储

    二叉树的存储

        连续存储【完全二叉树】

            书上 性质4——性质5

                优点:

                    查找某个节点的父节点和子节点(也包括有没有子节点)速度很快

                缺点:

                    耗用内存空间过大

        链式存储

            比较简单,耗费内存也少,随机分布,依靠指针域进行链接


    一般树的存储

        双亲表示法(求父节点方便)

            将元素的父节点的下标保存

        孩子表示法(求子节点方便)

            保存子节点的指针域

        双亲孩子表示法(求父节点,求子节点都很方便)

            1,保存父节点下标

            2,保存子节点指针    

        二叉树表示法

            把一个普通树转化成二叉树来存储,

            具体转换方法:

                设法保证任意一个节点的左指针域指向他的第一个孩子,右指针域指向他的兄弟

                只要能满足此条件,就可以将一个普通树转化成二叉树

                一个普通树转化成的二叉树,一定没有右子树。当看到一个二叉树的时候,不一定就真的是一课二叉树,有可能是普通书转化而来。

    森林的存储

        森林的存储和一般树转化二叉树方法是一样的。先把森林转化为二叉树,在存储二叉树


学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog




转载于:https://my.oschina.net/woshixiaomayi/blog/599095

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值