zoukankan      html  css  js  c++  java
  • 树相关

        树
                树定义
                        专业定义:
                          1、有且只有一个称为根的节点
                          2、有若干个互不相交的子树,这些子树本身也是一棵树
                          
                        通俗定义:
                            1、树是由节点和边组成
                            2、每个节点只有一个父节点但可以有多个子节点
                            3、但有一个节点例外,该节点没有根节点,此节点称为根节点
                    
                        专业术语
                            节点    父节点      子节点
                            子孙    堂兄弟      
                            深度:
                                从根节点到最底层节点的层数称之为深度
                                根节点是第一层
                            叶子节点;(叶子就不能劈叉了)
                                没有子节点的节点
                            非终端节点:
                                实际就是非叶子节点。
                            根节点既可以是叶子也可以是非叶子节点
                            度:
                                子节点的个数称为度。(一棵树看最大的)            
                树分类:
                    一般树
                        任意一个节点的子节点的个数都不受限制
                    二叉树(有序树)
                        任意一个节点的子节点的个数最多两个,且子节点
                        的位置不可更改。
                        
                        分类:
                            一般二叉树
                            满二叉树
                                在不增加树的层数的前提下。无法再多
                                添加一个节点的二叉树就是满二叉树。
                            完全二叉树
                                如果只是删除了满二叉树最底层最右边的
                                连续若干个节点,这样形成的二叉树就是
                                完全二叉树。
                            
                    森林
                        n个互不相交的树的集合
    
    
    一般的二叉树要以数组的方式存储,要先转化成完全二叉树,因为如果你
    只存有效节点(无论先序,中序,后序),则无法知道这个树的组成方式
    是什么样子的。
    
                        
                树的存储(都是转化成二叉树来存储)
                    二叉树的存储
                        连续存储【完全二叉树】
                            优点:
                                查找某个节点的父节点和子节点(也包括判断有咩有)速度很快
                            缺点:
                                耗用内存空间过大
                        
                        链式存储
                        
                    一般树的存储
                        双亲表示法
                            求父节点方便
                        孩子表示法
                            求子节点方便
                        双亲孩子表示法
                            求父节点和子节点都很方便
                        二叉树表示法
                            把一个普通树转化成二叉树来存储
                            具体转换方法:
                                设法保证任意一个节点的
                                    左指针域指向它的第一个孩子
                                    有指针域指向它的下一个兄弟
                                只要能满足此条件,就可以把一个普通树转化成二叉树
                                一个普通树转化成的二叉树一定没有右子树
                            
                    
                    森林的存储
                        先把森林转化为二叉树,再存储二叉树,具体方式为:根节点
                        之间可以当成是兄弟来看待
                    
                二叉树操作
                    遍历
                          
                          先序遍历【先访问根节点】
                                  先访问根节点
                                  再先序访问左子树
                                  再先序访问右子树
                          
                          中序遍历【中间访问根节点】
                                  中序遍历左子树
                                  再访问根节点
                                  再中序遍历右子树
                                  
                          后序遍历【最后访问根节点】
                                  先后序遍历左子树
                                  再后序遍历右子树
                                  再访问根节点
                          
                      已知两种遍历序列求原始二叉树 
                              通过先序和中序 或者 中序和后续我们可以
                              还原出原始的二叉树
                              但是通过先序和后续是无法还原出原始的二叉树的
                              
                              换种说法:
                                  只有通过先序和中序, 或通过中序和后序
                                  我们才可以唯一的确定一个二叉树                  
                      
                    应用
                        树是数据库中数据组织的一种重要形式(例如图书馆
                        的图书分类一层一层往下分。)
                        操作系统子父进程的关系本身就是一棵树
                        面向对象语言中类的继承关系本身就是一棵树
                        赫夫曼树(树的一个特例)
        
        
        图
    
    模块三:查找和排序
            折半查找
            
            
            排序:
                    冒泡
                    插入
                    选择
                    快速排序
                    归并排序
            
            排序和查找的关系
                排序是查找的前提
                排序是重点
                        
                    
    Java中容器和数据结构相关知识
        Iterator接口
        Map
            哈希表(与Java关系比较大)
            
    再次讨论什么是数据结构:
        数据结构研究是数据结构的存储和数据的操作的一门学问
        数据的存储分为两部分:
                    个体的存储
                    个体关系的存储
                    从某个角度而言,数据的存储最核心的就是个体关系
                    的存储,个体的存储可以忽略不计。
    
    再次讨论到底什么是泛型:
        同一种逻辑结构,无论该逻辑结构物理存储是什么样子的
        我们都可以对它执行相同的操作(例如都是线性结构或者
        用数组实现的树和用链表实现的树。利用重载技术。)
  • 相关阅读:
    Django_环境配置(一)
    python 使用sub替换时报错“re.error: bad escape P”或 “SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes”
    python 获取异常全部信息
    Flink入门 构建一个应用
    Flink入门 本地环境搭建
    mysql数据库 使用分析工具 进行慢查询分析
    Windows环境下搭建 【ElasticSearch】
    SpringBoot 事务的控制
    spring boot 数据库事务检查
    利用jenkins一键部署项目
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/10984119.html
Copyright © 2011-2022 走看看