数据结构(树,二叉搜索树,平衡二叉树 C++实现)

本文介绍了树的概念、存储结构和二叉树的遍历方法,深入讲解了二叉查找树的查找、插入和删除操作。此外,文章详细探讨了平衡二叉查找树的插入原理,展示了如何通过旋转操作保持树的平衡,并提供了C++实现代码。

树(Tree)是n(n>=0)个结点的有限集合。n = 0时称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n > 1时,其余结点可分为m (m > 0)个互不相交的有限集 T1T1T2T2 、 …… 、 TmTm ,其中每一个集合本身又是一个树,并且称为根的子树(SubTree),如下图所示:

这里写图片描述

树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。

结点的子树的根称为该结点的孩子(Child),相应地,该结点称为还的双亲(Parent)。同一个双亲的孩子之间互称兄弟(Sibling)。结点的祖先是从根到结点所经分支上的所有结点。对于 FF 来说 B AA 都是它的祖先。以某结点为根的子树中的任一结点都称为该结点的子孙。 B 的子树有 EE F GG。如下图:

这里写图片描述

树的存储结构

树的存储结构有多种,常用的有双亲表示法、孩子表示法、孩子兄弟表示法。

双亲表示法

结构如下:

data parent

其中data是数据域,存储结点的数据信息。而parent是指针域,指向该结点的双亲。


template < typename T>
struct TreeNode
{
  T data;
  TreeNode * parent;
}

之前的树的存储结构如下:

这里写图片描述

孩子表示法
data child1 child2 child3 childd
template <typename T>
struct TreeNode
{
  T data;
  TreeNode * nodeList;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值