二叉树层次建树中的 双结构体(树与辅助队列)

  1. BiTNode 结构体:

    typedef char BiElemType;
    typedef struct BiTNode {
        BiElemType c;
        struct BiTNode *lchild;
        struct BiTNode *rchild;
    } BiTNode, *BiTree;
    
    • BiElemType:这是一个类型别名,在这种情况下,它表示二叉树中元素的数据类型。在这个代码中,它被定义为 char

    • struct BiTNode:这个结构体表示二叉树中的一个节点。

      • BiElemType c:这个成员保存节点的实际数据(在这种情况下是字符)。

      • struct BiTNode *lchild:这个成员是指向节点左孩子的指针。

      • struct BiTNode *rchild:这个成员是指向节点右孩子的指针。

    • BiTree:这是一个指向 struct BiTNode 的指针的类型别名。这是一种常见的做法,为了方便使用和更好的代码可读性使用这样的别名。BiTree 表示指向二叉树根的指针。

  2. tag_t 结构体(二叉树辅助队列节点):

    typedef struct tag {
        BiTree p;  // 指向二叉树中节点的指针
        struct tag *pnext;  // 指向队列中下一个节点的指针
    } tag_t, *ptag_t;
    
    • struct tag:这个结构体表示在构建二叉树时使用的辅助队列中的一个节点。

      • BiTree p:这个成员是指向二叉树中节点的指针。它有效地存储了一个节点的地址。

      • struct tag *pnext:这个成员是指向队列中下一个节点的指针。它用于将队列中的节点链接在一起。

    • tag_t:这是 struct tag 的类型别名。对于结构体,使用 _t 后缀是一种命名习惯。

    • ptag_t:这是指向 struct tag 的指针的类型别名。它表示指向队列中节点的指针。

BiTNode 结构体表示二叉树中的节点,而 tag_t 结构体表示在构建二叉树时使用的队列中的节点。结构体内部的指针用于在树或队列中建立节点之间的关系,从而促使树的构建和遍历。类型别名(BiTreeptag_t)为这些结构体的指针提供了便捷的名称。


辅助队列中 BiTree p;的p是用来指向树的 即指向 struct BiTNode 的指针的类型。但是必须由辅助队列的plag_t的指针类型引用

  1. BiTree ptag_t 结构体中是一个指向二叉树节点的指针。具体而言,它是指向 struct BiTNode 的指针。这个指针用于将辅助队列中的节点与二叉树中的节点相关联。

  2. ptag_t 是一个指向 tag_t 结构体的指针的类型别名。在这里,ptag_t 表示指向辅助队列中节点的指针。这种类型别名的使用是为了提高代码的可读性和方便性。你可以通过 ptag_t 类型的指针来操作辅助队列中的节点,包括访问其中的 BiTree p 指针。

ptag_t 类型的指针用于引用辅助队列中的节点,而这些节点包含了指向二叉树节点的指针 BiTree p,从而建立了辅助队列和二叉树之间的关联。


解析辅助队列结构体:

struct tag *pnext;ptag_t 是相关的但不同的概念。

  1. struct tag *pnext;

    • 这是 tag_t 结构体内部的成员,它是一个指向下一个 tag_t 结构体的指针。
    • pnexttag_t 结构体内部用来构建链表的成员,通过这个指针,可以遍历整个队列。
  2. ptag_t

    • 这是一个类型别名,表示指向 struct tag 的指针。在代码中,它用来声明指向 tag_t 结构体的指针。
    • 当声明 ptag_t p; 时,p 就是一个指向 struct tag 的指针。

所以,区别在于:

  • struct tag *pnext;tag_t 结构体内部的成员,用于构建队列。
  • ptag_t 是一个类型别名,用于声明指向 struct tag 的指针。

struct tag 中的 BiTree p; 是一个成员变量,它的作用是存储指向二叉树节点的指针。具体来说,它是指向 struct BiTNode 结构体的指针。这个成员变量的作用是将辅助队列中的节点与二叉树中的节点进行关联。

  • BiTree p; 内含了一个指向二叉树节点的指针。在这里,BiTree 是一个类型别名,表示指向 struct BiTNode 的指针。

  • struct BiTNode 结构体表示二叉树中的一个节点,包括节点的数据 (BiElemType c) 以及左右孩子的指针 (struct BiTNode *lchildstruct BiTNode *rchild)。

通过在 struct tag 中使用 BiTree p;,可以在辅助队列中存储指向二叉树节点的指针,使得在树的构建过程中能够轻松地操作和关联二叉树中的节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆小果不会写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值