标签:
---恢复内容开始---
遍历二叉树是以一定规则将二叉树中结点排列成一个线性序列即是对一个非线性结构进行线性化操作,使除第一个和最后一个节点外,每一个节点有且只有一个直接前驱,直接后继
二叉树作为存储结构只能找到节点的左孩子右孩子信息,而不能直接得到结点在任一序列中的前驱和后继,这种信息只有在遍历的动态过程中可以看到。
二叉树线索化可以利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息可以使用以下结点结构:
enum pointertag{ Link, Thread };
template<class T>
struct BinaryTreeNode
{
T _data;
BinaryTreeNode<T>* _left;
BinaryTreeNode<T>* _right;
pointertag _lefttag, _righttag;
BinaryTreeNode(const T&x)
:_data(x)
, _left(NULL)
, _right(NULL)
, _lefttag(Link)
, _righttag(Link)
{}
};
其中当_leftTag==Link时_left指向其左孩子;
当_leftTag==Thread时_left指向其前驱;
当_rightTag==Link时_right指向其右孩子;
当_rightTag==Thread时_right指向其后继;
1、二叉树的中序线索化
---恢复内容结束---
标签:
原文地址:http://www.cnblogs.com/Blog-day/p/My_Blog_Days_17.html