树结构
哈喽,大家好,我是赏月君,今天简单介绍一下二叉树,废话少说,上题目。
树结构是一种数据结构,它由结点(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)的二叉树