C 中序線索化二叉樹及其遍歷

2021-07-07 08:57:38 字數 1219 閱讀 5932

二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞迴或者用棧輔助實現非遞迴的遍歷。用二叉樹作為儲存結構時,取到乙個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者後繼。

為了儲存這種在遍歷中需要的資訊,我們利用二叉樹中指向左右子樹的空指標來存放節點的前驅和後繼資訊。

void inoderthread()//中序線索化

void inodersort()//通過中序線索化中序遍歷二叉樹

cout << cur->_data << " ";

while (cur&&cur->_righttag == thread)

if (cur)

} }

protected:

void _creatbintreethreading(bintreethingnode*&root, const char *&str)

}} void _inoderthread(bintreethingnode*&cur, bintreethingnode*&prev)

//上一節點prev的後繼

if (prev&&prev->_right == null)

prev = cur;//更新上一訪問的節點

_inoderthread(cur->_right, prev);

} }private:

bintreethingnode*_root;

};

void test()

int main()

二叉樹的線索化 線索二叉樹的遍歷(中序)

二叉樹的線索化 對於n個節點的二叉樹,在二叉儲存鍊錶中有n 1個空鏈域,利用這些空鏈域存放某種遍歷次序下的指向該節點的前驅和後繼的指標,這些指標成為線索,被線索的二叉樹成為線索二叉樹。這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binarytree 根據線索性...

線索化二叉樹的中序遍歷

實現 package tree.threadedbinarytree public class threadedbinarytree hreonode root newhreonode 1 宋江 hreonode node2 newhreonode 3 吳用 hreonode node3 newhr...

C 後序線索化二叉樹及其遍歷

void postthread 後序線索化 後序線索化的遍歷 void postsort if cur cur righttag thread 當cur無右孩子時,cur就可以被訪問了 if cur root cur right null 當根節點被訪問時,遍歷完成 cur cur right 當c...