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

树定义spa

    专业定义.net

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

    2,有若干个互不相交的子树,这些子树自己也是一棵树blog

   通俗定义内存

    1,树是有节点和边组成ci

    2,每一个节点只有一个父节点,但能够有多个直接点get

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

    专业术语it

        节点    父节点    子节点二叉树

        子孙    堂兄弟

        深度:

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

            根节点是第一层

        叶子节点:    

            没有子节点的节点

        非终端节点

            实际就是非叶子节点

        度

            子节点的个数称为度


树的分类

    通常树

    二叉树

    森林


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

二叉树:

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

    分类:

        通常二叉树

        满二叉树:

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

        彻底二叉树

            若是只是删除满二叉树最底层最右边的连续若干个节点,这样造成的二叉树就是彻底二叉树

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


树的存储

    二叉树的存储

        连续存储【彻底二叉树】

            书上 性质4——性质5

                优势:

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

                缺点:

                    耗用内存空间过大

        链式存储

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


    通常树的存储

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

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

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

            保存子节点的指针域

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

            1,保存父节点下标

            2,保存子节点指针    

        二叉树表示法

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

            具体转换方法:

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

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

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

    森林的存储

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


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

相关文章
相关标签/搜索