用C语言写二叉线索树中序遍历,继续上面的回答
时间: 2023-02-06 20:50:53 浏览: 123
二叉线索树的中序遍历可以使用递归的方法或者非递归的方法。下面是使用递归的方法的代码示例:
```
void inorder_traversal(BiThrNode *p)
{
if (p != NULL)
{
inorder_traversal(p->lchild); // 递归遍历左子树
printf("%d ", p->data); // 访问根结点
inorder_traversal(p->rchild); // 递归遍历右子树
}
}
```
下面是使用非递归的方法的代码示例:
```
void inorder_traversal(BiThrNode *p)
{
BiThrNode *q = p;
while (q != NULL)
{
while (q->lchild != NULL) // 找到左子树最左边的结点
q = q->lchild;
printf("%d ", q->data); // 访问当前结点
while (q->rtag == 1 && q->rchild != NULL) // 当前结点有右线索,直接访问右子树
{
q = q->rchild;
printf("%d ", q->data);
}
q = q->rchild; // 转向右子树
}
}
```
希望以上示例能够帮到你。
阅读全文