数据结构与算法——第6章-树-线索二叉树(6.10.1)
一 概述
1 | 1.二叉树遍历 |
二 二叉树遍历
1 | 通过前面对二叉树的学习,了解到二叉树本身是一种非线性结构, |
三 什么是线索二叉树
1 | 如果算法中多次涉及到对二叉树的遍历,普通的二叉树就需要使用栈结构做重复性的操作。 |
四 线索二叉树的结点结构
4.1 存储密度
1 | 如果在二叉树中想保存每个结点前趋和后继所在的位置信息,最直接的想法就是改变结点的结构, |
4.2 线索二叉树
1 | 每一棵二叉树上,很多结点都含有未使用的指向 NULL 的指针域。 |
4.3 线索二叉树中的结点结构
一、图示
1 | 线索二叉树中,如果结点有左子树,则 lchild 指针域指向左孩子,否则 lchild 指针域指向该结点的直接前趋; |
二、变量说明
1 | LTag 和 RTag 为标志域。实际上就是两个布尔类型的变量: |
五 示例代码
5.1 结点结构代码实现:
1 | #define TElemType int//宏定义,结点中数据域的类型 |
5.2 说明
1 | 表示二叉树时,使用图 2 所示的结点结构构成的二叉链表,被称为线索链表;构建的二叉树称为线索二叉树。 |
六 参考
- C语言中文网—线索二叉树