二叉树的边界遍历

17 Mar 2025 | 4 分钟阅读

二叉树的边界遍历包括左边界、叶子节点和右边界,不重复节点,因为节点可能包含重复的值。边界有两种类型,即左边界和右边界。左边界可以定义为从根节点到最左边节点的路径,而右边界可以定义为从根节点到最右边节点的路径。如果根节点不包含任何左子树和右子树,那么根节点本身将被视为左边界和右边界。

让我们通过一个例子来理解二叉树的边界遍历。

考虑下面的树

Boundary Traversal of Binary tree

我们需要在上面的二叉树中执行边界遍历。首先,我们遍历上面二叉树中属于边界遍历的左侧所有节点。出现在左侧的节点是a b c d f e。出现在右侧的节点是 a k l n。我们已经遍历了左右节点,现在我们将遍历叶子节点。在上面的树中,叶子节点是 e g h j m n。有些节点在所有边界中重复出现;例如,节点 'a' 出现在左边界和右边界中,所以我们将 'a' 从右边界中移除,现在它只出现一次。有些节点也可能在叶子节点中重复出现。由于节点 'e' 出现在左边界和叶子节点中,所以我们将 'e' 从叶子节点中移除。节点 'n' 也出现在右边界和叶子节点中,所以我们将节点 'n' 从叶子节点中移除。因此,最终的边界遍历结果是

a b c d f e k l n g h j

假设我们要以逆时针方向执行二叉树的边界遍历,那么问题可以分解为四个部分:

  1. 首先打印根节点。
  2. 遍历除叶子节点之外的最左边的节点。
  3. 叶子节点
  4. 遍历除叶子节点之外的最右边的节点。

下面是查找二叉树最左边节点的源代码

下面是查找二叉树最右边节点的源代码

打印叶子节点的源代码。

以下是实现二叉树边界遍历的 C 语言实现

输出

Boundary Traversal of Binary tree