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

树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
结点的子树的根称为该结点的孩子(Child),相应地,该结点称为还的双亲(Parent)。同一个双亲的孩子之间互称兄弟(Sibling)。结点的祖先是从根到结点所经分支上的所有结点。对于 FF 来说 、 AA 都是它的祖先。以某结点为根的子树中的任一结点都称为该结点的子孙。 的子树有 EE 、 、 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;
}

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

被折叠的 条评论
为什么被折叠?



