数据结构--树

定义
        有且只有一个根节点
        有若干互不相交的子树,这些子树本身也是一棵树
    定义
        树是由节点和边(指针)组成
        每个节点只有一个父节点,但可以有多个子节点
        根节点例外


术语
        节点 父节点 子节点
        子孙 堂兄弟
        深度:从跟点到底层节点的层数
        叶子节点:没有子节点的节点
        非终端节点:非叶子节点
        度:子节点的个数


分类
        一般树
            任意一个节点的子节点个数不受限制
        二叉树
            任意一个积点的子节点个数最多2个,且顺序不可更改
            分类
                一般二叉树
                满二叉树:不增加层数的情况下无法添加节点
                完全二叉树:从最右边最底层的节点删除连续的节点形成的二叉树(从右向左)      
        森林
            n个互不相交的树的集合


    存储
    二叉树
        连续存储(要转化为完全二叉树)
            优点:可以直接判断或者计算子(父)节点
            缺点:要转化为完全二叉树,耗费内存
        链式存储
    一般树
        双亲表示法:存的是父节点的下标
        孩子表示法:存的是孩子的指针
        双亲孩子表示法
        二叉树表示法:转化为二叉树
        方法:左指针指向第一个孩子,右指针指向第一个兄弟


    操作
        先序遍历(先根节点)
            先访问根节点
            再访问左子树
            再访问右子树
        中序遍历(中间根节点)
            先放左子树
            在访问根节点
            再遍历右子树
        后序遍历(后根节点)
            先遍历左子树
            再遍历右子树
            后遍历根节点
    已知两种遍历顺序求原始二叉树
        只能通过先序和中序,中序和后序,先序和后序不能还原原始二叉树


  习题
    举例1:已知先序和中序求后序
        先序:ABCDEFGH
        中序:BDCEAFHG
        解决:先由先序得到根节点A,然后由中序知道左树是BDCE,右树是FGH;接着由先序知道B是第一个节点,由中序知道B左   边没有节点;
            接着由先序知道C是第一个节点,由中序DE分别位于C两边,知道C有2个分支,再结合先序顺序DE,便可确定树的结构。右边同理。
        先序:ABDGHCEFI
        后序:GDHBAECIF
        思路:结合便利特点,先序:第一个为根节点,中序:根节点在中间。


    举例2:已知中序和后序求先序
        中序:BDCEAFHG
        后序:DECBHGFA
        解决:先序和后序有类似。最后一个元素一定是根节点,所以根节点是A;由中序可可知BDCE在左子树,FGH在右子树;
            后序中B在最后,所以先确定B的位置,再结合中序知道DCE在B的右边;有后序确定C的位置,结合中序确定D左E右。
        总结:先序第一个出现的是根节点;
            中序左边的节点出现在左边,右边的节点出现在右边;
            后序最后一个是根节点。
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值