線索二叉樹--二叉樹線索化

遍歷二叉樹是對非線性結構進行線性化操做,在獲得的訪問序列中,每一個節點都只有一個直接前去和一個直接後繼。指針

引入線索二叉樹能夠加快查找前去於後繼節點的速度,實質就是將二叉鏈表中的空指針改成指向前驅或者後繼的線索,線索話就是在遍歷中修改空指針。二叉樹

一般規定:對某一結點,若無左子樹,將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;

相關文章
相關標籤/搜索