遍歷二叉樹是對非線性結構進行線性化操做,在獲得的訪問序列中,每一個節點都只有一個直接前去和一個直接後繼。指針
引入線索二叉樹能夠加快查找前去於後繼節點的速度,實質就是將二叉鏈表中的空指針改成指向前驅或者後繼的線索,線索話就是在遍歷中修改空指針。二叉樹
一般規定:對某一結點,若無左子樹,將lchild指向前驅結點;若無右子樹,將rchild指向後繼結點。遍歷
還須要設置左右兩個tag,用來標記當前是否有子樹。鏈表
若tag == 1,lchild指向結點前去;若rtag == 1,rchild指向結點後繼。data
線索二叉樹的存儲結構以下:struct
typedef struct TreadNode{tag
Elemtype data;
struct TreadNode *lchild, *rchild;
int ltag,rtag;
}ThreadNode, *ThreadNode;