2024-11-01    2024-11-01     736 字  2 分钟
DSA

Box Trace (基于递归插入)

  1. 插入 Jan
    • 当前树为空,创建 Jan 作为根节点。
  2. 插入 Feb
    • Feb < Jan,递归到 Jan 的左子树。
    • Jan 的左子树为空,将 Feb 作为 Jan 的左子节点。
  3. 插入 Mar
    • Mar > Jan,递归到 Jan 的右子树。
    • Jan 的右子树为空,将 Mar 作为 Jan 的右子节点。
  4. 插入 Apr
    • Apr < Jan,递归到 Jan 的左子树。
    • Apr < Feb,递归到 Feb 的左子树。
    • Feb 的左子树为空,将 Apr 作为 Feb 的左子节点。
  5. 插入 May
    • May > Jan,递归到 Jan 的右子树。
    • May > Mar,递归到 Mar 的右子树。
    • Mar 的右子树为空,将 May 作为 Mar 的右子节点。
  6. 插入 Jun
    • Jun > Jan,递归到 Jan 的右子树。
    • Jun < Mar,递归到 Mar 的左子树。
    • Mar 的左子树为空,将 Jun 作为 Mar 的左子节点。
  7. 插入 Jul
    • Jul > Jan,递归到 Jan 的右子树。
    • Jul < Mar,递归到 Mar 的左子树。
    • Jul < Jun,递归到 Jun 的左子树。
    • Jun 的左子树为空,将 Jul 作为 Jun 的左子节点。
  8. 插入 Aug
    • Aug < Jan,递归到 Jan 的左子树。
    • Aug < Feb,递归到 Feb 的左子树。
    • Aug > Apr,递归到 Apr 的右子树。
    • Apr 的右子树为空,将 Aug 作为 Apr 的右子节点。
  9. 插入 Sep
    • Sep > Jan,递归到 Jan 的右子树。
    • Sep > Mar,递归到 Mar 的右子树。
    • Sep > May,递归到 May 的右子树。
    • May 的右子树为空,将 Sep 作为 May 的右子节点。
  10. 插入 Oct
    • Oct > Jan,递归到 Jan 的右子树。
    • Oct > Mar,递归到 Mar 的右子树。
    • Oct > May,递归到 May 的右子树。
    • Oct < Sep,递归到 Sep 的左子树。
    • Sep 的左子树为空,将 Oct 作为 Sep 的左子节点。
  11. 插入 Nov
    • Nov > Jan,递归到 Jan 的右子树。
    • Nov > Mar,递归到 Mar 的右子树。
    • Nov > May,递归到 May 的右子树。
    • Nov < Sep,递归到 Sep 的左子树。
    • Nov < Oct,递归到 Oct 的左子树。
    • Oct 的左子树为空,将 Nov 作为 Oct 的左子节点。
  12. 插入 Dec
    • Dec < Jan,递归到 Jan 的左子树。
    • Dec < Feb,递归到 Feb 的左子树。
    • Dec > Apr,递归到 Apr 的右子树。
    • Dec > Aug,递归到 Aug 的右子树。
    • Aug 的右子树为空,将 Dec 作为 Aug 的右子节点。

通过以上步骤,构建的 BST 结构如下:

picture 0