一颗树,两棵树,三棵树_TREE_TO_Tree

树 Tree

数据结构图形解析非常直观

树(Tree)介绍

树(Tree): 一种非线性表结构。是由n(n>=1)个有限结点组成一个具有层次关系的集合。

特点

每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。

高度(Height)、深 度(Depth)、层(Level)

在这里插入图片描述

种类

无序树、有序树、二叉树、满二叉树、完全二叉树、平衡二叉树(avl)、二叉查找树(二叉搜索树、BST)、霍夫曼树、红黑树、B树

在这里插入图片描述

二叉树(Binary Tree)

二叉树,每个节点最多有两个子节点,分别是左子节点和右子节点。

存储一棵二叉树,我们有两种方法,一种是基于指针或者引用的二叉链式存储法,一种是基于数组的顺序存储法

二叉树的遍历

广度优先(BFS)
层次遍历:先访问离根节点最近的节点。

深度优先(DFS):前序遍历、中序遍历和后序遍历

前序遍历是指,对于树中的任意节点来说,先打印这个节点,然后再打印它的左子树,最后打印 它的右子树。
中序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它本身,最后打印它 的右子树。
后序遍历是指,对于树中的任意节点来说,先打印它的左子树,然后再打印它的右子树,最后打 印这个节点本身。

BST树(二叉搜索树):

二叉搜索树(Binary Search Tree,简写BST),又称为二叉排序树,属于树的一种,通过二叉树将数据组织起来,树的每个节点都包含了健值 key、数据值 data、左子节点指针、右子节点指针。其中健值 key 是最核心的部分,它的值决定了树的组织形状;数据值 data 是该节点对应的数据,有些场景可以忽略,举个例子,key 为身份证号而 data 为人名,通过身份证号找人名;左子节点指针指向左子节点;右子节点指针指向右子节点。

二叉查找树也叫二叉搜索树(BST),是为了实现快 速查找而生的。不仅支持快速查找一个数据,还支持快速插入、删除一个数据。

特点:

  • 左右子树也分别是二叉搜索树。
  • 左子树的所有节点 key 值都小于它的根节点的 key 值。
  • 右子树的所有节点 key 值都大于他的根节点的 key 值。
  • 二叉搜索树可以为一棵空树。

​ 一般来说,树中的每个节点的 key 值都不相等,但根据需要也可以将相同的 key 值插入树中

AVL树(平衡二叉树):

AVL树,也称平衡二叉搜索树,AVL是其发明者姓名简写。AVL树属于树的一种,而且它也是一棵二叉搜索树,不同的是他通过一定机制能保证二叉搜索树的平衡,平衡的二叉搜索树的查询效率更高。

特点:

  • AVL树是一棵二叉搜索树。
  • AVL树的左右子节点也是AVL树。
  • AVL树拥有二叉搜索树的所有基本特点。
  • 每个节点的左右子节点的高度之差的绝对值最多为1,即平衡因子为范围为[-1,1]。

红黑树

红黑(Red-black)树

​ 是一种自平衡二叉查找树,1972年由Rudolf Bayer发明,它与AVL树类似,都在插入和删除操作时能通过旋转操作保持二叉查找树的平衡,以便能获得高效的查找性能。**它可以在 O(logn) 时间内做查找,插入和删除等操作。**红黑树是2-3-4树的一种等同,但有些红黑树设定只能左边是红树,这种情况就是2-3树的一种等同了。对于AVL树来说,红黑树牺牲了部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树。

特点:

  • 节点是红色或黑色。
  • 根节点是黑色。
  • 每个叶节点(NIL节点)是黑色的。
  • 每个红色节点的两个子节点都为黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
  • 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
  • 最长路径不超过最短路径的2倍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值