C++二叉树简单介绍

树结构

哈喽,大家好,我是赏月君,今天简单介绍一下二叉树,废话少说,上题目。
树结构是一种数据结构,它由结点(node)以及连接结点的边(edge)构成。如下图所示,我们用圆代表结点,用线代表边。
树的示例
如果一棵树具有一个名为“根”(root)的特殊结点,那么这棵树称作有根树(rooted tree)。
有根树的结点之间具有父子关系。设一棵有根树T,其根r到结点x的路径上的最后一条边连接着结点p与结点x,此时我们将p称作x的父结点(parent),将x称作p的子结点(child)。如下图所示,结点2的父结点是0(根),兄弟结点是1和3。
从图中可以看出,根是唯一一个没有父结点的结点。我们将没有子结点的结点称为外部结点(external node)或叶结点(leaf)。除叶结点以外的结点称为内部结点(internal node)。
结点的种类
有根树T中结点x的子结点数称为x的度(degree)。例如结点2拥有6、7、8三个子结点,所以它的度为3。如果一个结点没有子结点,那么它的度为0。
从根r到结点x的路径长度称为x的深度(depth)。另外,结点x到叶结点的最大路径长度称为结点x的高(height)。一棵树中根结点的高度最大,我们也称其为数的高。例如图中结点8的深度为2高为1,树高为3。

二叉树

如果一棵树拥有一个根结点,且所有结点的子结点数都不超过2,那么这棵树称为有根二叉树。下图就是二叉树的例子。
二叉树示例
在二叉树中,每个结点的子结点不超过两个,而且子结点有左子结点和右子结点之分。也就是说,当某个结点只存在一个子结点时,要严格区分它是左子结点还是右子结点。上图中(a)的结点6是结点3的左子结点,而(b)的结点6是结点3的右子结点。我们将这种子结点有特定顺序的树称为有序树。
二叉树T可以递归地进行定义。满足下述条件之一的树即为二叉树。

  • T没有任何结点
  • T由以下三个不包含共通元素的顶点集合构成
    • 根(root)
    • 称为左子树(left subtree)的二叉树
    • 称为右子树(right subtree)的二叉树
      二叉树的子树
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值