线索树(Threaded Tree)
个人理解:
对于一棵二叉树中,它的一些节点的左右孩子不一定都在,这样的话,我们基于原先的节点结构
template<Type>
class Node{
Type data;
Node* leftChild;
Node* rightChild;
}
(1)这样就会有空间上的浪费,于是我们就想着将这些点利用起来
(2)考虑到在树中你可以轻松的遍历到一个节点的孩子,但却无法确定他的前驱,后继
综合上面两条,我们确立了以下结构
template<Type>
class Node{
Type data;
Node* left;
int Pred;
Node* right;
int Succ;
}
Pred 和Succ是标志位,为区分对应指针是指向孩子节点(0)还是前驱/后继节点(1)
分类
线索树根据遍历顺序的不同,分为先序,中序,后序遍历,指针的指向也会有所差别