数据结构基础知识——树和树的基本操作

本文概述了树的基本概念,包括树的定义、节点关系(子树、孩子、双亲、兄弟、度、叶子和分支节点),并重点介绍了二叉树及其特殊形式(如斜树、满二叉树和完全二叉树),以及二叉查找树的特点和优势。
摘要由CSDN通过智能技术生成

 本博客总结树的知识点参考 链接:树 - 基础和Overview | Java 全栈知识体系

一、树是什么?

树是一种数据结构,它是n(n>=0)个节点的有限集。n=0时称为空树。n>0时,有限集的元素构成一个具有层次感的数据结构。

 区别于线性表一对一的元素关系,树中的节点是一对多的关系。树具有以下特点:

1、n>0时,根节点是唯一的,不可能存在多个根节点。

2、每个节点有零个至多个子节点;除了根节点外,每个节点有且仅有一个父节点。根节点没有父节点。

二、树的相关概念

子树:除了根节点外,每个子节点都可以分为多个不相交的子树。

孩子和双亲:若一个结点有子树,那么该结点称为子树根的"双亲",子树的根是该结点的"孩子"。在图一中,B、H是A的孩子,A是B、H的双亲。

兄弟:具有相同双亲的节点互为兄弟,例如B与H互为兄弟。

节点的度: 一个节点拥有子树的数目。例如A的度为2,B的度为1,C的度为3.

叶子: 没有子树,也即是度为0的节点。

分支节点:除了叶子节点之外的节点,也即是度不为0的节点。

内部节点:除了根节点之外的分支节点。

层次:根节点为第一层,其余节点的层次等于其双亲节点的层次加1.

树的高度:也称为树的深度,树中节点的最大层次。

有序树:树中节点各子树之间的次序是重要的,不可以随意交换位置。

无序树:树种节点各子树之间的次序是不重要的。可以随意交换位置。

森林: 0或多棵互不相交的树的集合。

三、二叉树及其特殊二叉树

1、二叉树:最多有两颗子树的树被称为二叉树。

 2、斜树: 所有节点都只有左子树的二叉树叫做左斜树,所有节点都只有右子树的二叉树叫做右斜树。(本质就是链表)

 3、满二叉树: 二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上。

 4、完全二叉树: 如果一个二叉树与满二叉树前m个节点的结构相同,这样的二叉树被称为完全二叉树

 5、二叉查找树 - BST

二叉查找树(Binary Search Tree)是指一棵空树或者具有下列性质的二叉树:

  • 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
  • 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
  • 任意节点的左、右子树也分别为二叉查找树;
  • 没有键值相等的节点。

二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低为 O ( log ⁡ n ) 。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数组等。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值