【算法手记05】树与二叉树

本文详细介绍了树的基本概念,包括节点、根节点、子节点、父节点、叶子节点等,并着重讲解了二叉树(如满二叉树、完全二叉树、BST二叉搜索树和AVL平衡二叉树)的定义、性质和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

树 Tree

定义

树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。
把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。


术语

  • 节点(node):每一个元素称为一个节点
  • 根节点(root) :没有父节点的节点(从图像来看,就是往上没有任何节点了)。一棵树只能有一个根节点。
  • 子节点:一个节点的下一级节点。如图,B、C是A的子节点。
  • 父节点:一个节点的上一级节点。如图,B是D、E的父节点。
  • 叶子节点:没有子节点的节点。如图,H、E、F、G是叶子节点。
  • 节点的权:该节点存放的值。
  • 路径:从root节点到该节点的路线,可能不唯一。
  • 层:从根节点开始,根节点为第一层,根节点的子节点在第二层,以此类推。
  • 高度/深度:一棵树的最大层数。
  • 度:某节点拥有子节点的数量。叶子节点的度为0
  • 子树:子节点及其子节点构成的树,一个节点也是树。如图DH是节点B的子树,E也是B的子树。

  • 森林:由m(m>0)棵互不相交的树的集合称为森林;

二叉树 BiTree

定义

  1. 每个节点最多只能有2个节点的树称为二叉树。
  2. 二叉树的子节点分为左节点和右节点。

满二叉树

定义


一个二叉树,如果每一个层的节点数都达到最大值(也就是每个父节点都有2个子节点),则这个二叉树就是满二叉树。

性质

对于深度为kkk的满二叉树,每层的节点数为 2k−12^{k-1}2k1,满足首项为1、公比为2的等比数列。
由等比数列求和公式:S=a1(1−qn)1−qS=\frac{a_1(1-q^n)}{1-q}S=1qa1(1qn)
可以推导出满二叉树的节点总数为2k−12^{k}-12k1.


完全二叉树

定义

一个深度为kkk的二叉树,如果其k−1k-1k1层的节点是的,kkk层节点是左连续的(也就是说,最后一层从左边第一个节点到最后一个节点都是连续的,比如把图中的000500050005节点去掉,就不算连续了。),那么就将这种二叉树称为完全二叉树

性质

  1. 满二叉树是完全二叉树的特殊情况;
  2. n个结点的完全二叉树的深度为:[log2n]+1[log_2n]+1[log2n]+1([ ]表示向下取整)

BST 二叉搜索树

Binary Search Tree

  • 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
  • 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
  • 它的左、右子树也分别为二叉排序树
    image.png

AVL 平衡二叉树

平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

image.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值