二叉树的认识

二叉树的介绍

树是一个非顺序数据结构,它对于存储需要快速查找的数据非常有用。

现实例子就是公司的组织架构,总裁为树的最顶端叫根节点,各部门按照领导人区分为子树。


二叉树术语概念

整个二叉树结构中,每个点叫作节点,每个节点都有父节点,而最上面的为根节点,根节点是没有父节点的。

节点另外一个属性为深度,是根据父节点有多少个来算的。

由根节点向下分的2个节点为子树,子树下面节点也是子树。


二叉树和二叉树搜索

二叉树最多2个节点,一个是左侧子节点,一个是右侧子节点。这些定义有助于我们写出更高效的向树中插入、查找和删除节点的算法。

二叉树搜索树(BST)是二叉树的一种,但是它只允许你在左侧节点存储(比父节点)小的值,在右侧节点存储(比父节点)大(或者等于)的值。



例子—插入一个节点

如根据下图,现在已经有一个二叉树。我们需要添加一个6,是怎样的?


首先会检测二叉树是否为空?

第二检测根节点(key[6] < root[11]为真),然后继续检测(node.left不是null),到达node.left[7]节点。

第三检测(key[6] < key[7]为真),然后继续检测(node.left不是null),到达node.left[5]节点。

最后检测(key[6] < key[5]为真),然后继续检测(node.right不是null),为空添加在key[5]右节点添加key[6]。

例子—移除一个节点

现在我们要移除一个节点5。

首先会检测二叉树是否为空?

第二检测根节点(key[5] = root[11]为真),然后检查(key[5] < root[11])然后继续检测(node.left不是null),到达node.left[7]节点。

第三检测根节点(key[5] = key[7]为真),然后检查(key[5] < key[7]为真),然后继续检测(node.left不是null),到达node.left[5]节点。

第四检测(key[5] = key[5]为真),然后删除 key[5]节点。

最后(key[5] )子节点,key[3]的父节点改成原来key[5]的父节点key[7]。




二叉树的遍历

二叉树的遍历有三种方式:中序遍历、先序遍历和后序遍历。

中序遍历

中序遍历是一种以上行顺序访问BST所有节点的遍历方式,也就是以从最小到最大的顺序访问所有节点。可以应用于树的排序操作。

如图:二叉树的遍历

二叉树的遍历有三种方式:中序遍历、先序遍历和后序遍历。

中序遍历

中序遍历是一种以上行顺序访问BST所有节点的遍历方式,也就是以从最小到最大的顺序访问所有节点。可以应用于树的排序操作。

如图:二叉树的遍历

二叉树的遍历有三种方式:中序遍历、先序遍历和后序遍历。

中序遍历

中序遍历是一种以上行顺序访问BST所有节点的遍历方式,也就是以从最小到最大的顺序访问所有节点。可以应用于树的排序操作。

如图:二叉树的遍历

二叉树的遍历有三种方式:中序遍历、先序遍历和后序遍历。

中序遍历

中序遍历是一种以上行顺序访问BST所有节点的遍历方式,也就是以从最小到最大的顺序访问所有节点。可以应用于树的排序操作。

如图:二叉树的遍历

二叉树的遍历有三种方式:中序遍历、先序遍历和后序遍历。

中序遍历

中序遍历是一种以上行顺序访问BST所有节点的遍历方式,也就是以从最小到最大的顺序访问所有节点。可以应用于树的排序操作。

如图:

你可能感兴趣的:(二叉树的认识)