1. 程式人生 > >對線索二叉樹的理解(一)

對線索二叉樹的理解(一)



第一次接觸“線索二叉樹”的時候,完全不能理解這種模型。

現在想想,大概的原因是看到線索二叉樹是要記錄樹節點的前驅和後繼的時候,下意識就想到“雙向連結串列”那裡去了,認為線索二叉樹也會像雙向連結串列一樣,通過記錄每個節點的前驅和後繼,來“極方便”地找到每個節點的前驅和後繼(節點a的前驅就是a->pre, 節點a的後繼就是a->next)。

但是線索二叉樹與雙向連結串列並不相同,線索二叉樹只是利用了自身多餘的n+1個空域來記錄前驅和後繼資訊,也只有這幾個有空域的節點才有記錄前驅或後繼,而且有的只有前驅,有的只有後繼。。 與雙向連結串列每個節點都有前驅和後繼相比,線索二叉樹節點的待遇實在是太差了。

至於怎麼找每個節點的前驅和後繼,那就是人家線索二叉樹的專門方法了,不然書上還講他幹嘛。  =。=

注:之所以是n+1個空域,是因為對於n個節點的二叉樹共有2n個指標域, 同時對於每一個節點都會有一個指標指向它,共n個,除了根節點,也就是是有效域為n-1, 所以空域為2n-(n-1),即n+1。