什么是线索二叉树

线索二叉树主要体现在二叉树的 DFS 中, 也就是前序, 中序, 与后序遍历, 我们以中序遍历为例, 讲述线索二叉树线索的原理.

线索主要表现在, DFS 的过程中记录遍历的前驱与后继节点, 可以用下面的图来表示节点,

接下来, 我们以此图来构造出一个线索二叉树, 构造线索二叉树只有两个原则:

prior 是中序遍历序列中的当前节点的前一个节点, 比如 A的prior 就是 E 节点,

  1. 若当前访问的结点的左指针域为空,则它指向prior指的结点, 同时置该节点 lbit 的值为 0;
  2. 若prior所指结点的右指针域为空,则它指向当前访问的结点, 同时置前驱节点的 rbit 为 0。

因为我们每次都要记录 prior 节点, 因此我们不妨将 prior 设置为全局变量, 这样访问起来较为方便

而构建这个索引的代码, 我们可以在中序遍历的基础上完成:

Tree *prior = *head;

void Mid_order(Tree *node)
{
    if(node != nullptr)
    {
        Mid_order(node->left);
        if(node->left == nullptr)
        {
            node->lbit = 0;
            node->left = prior;
        }
        if(prior->right == nullptr)
        {
            prior->rbit = 0;
            prior->right = node;
        }
        VISIT(node);
        prior = node;
        Mid_order(node->right);
    }
}

假设我们最先访问的是head节点, 及第一个prior 节点是 head 节点. 现在我们构造出了下面这样的线索二叉树,

相关文章:

  • 2021-06-02
  • 2022-02-09
  • 2021-11-02
  • 2021-10-09
  • 2021-08-16
  • 2021-12-11
  • 2022-12-23
猜你喜欢
  • 2021-11-03
  • 2021-05-29
  • 2021-07-13
  • 2022-12-23
  • 2021-10-08
  • 2021-12-24
  • 2021-10-26
相关资源
相似解决方案