一.線索樹
線索樹是二叉樹的一種改進,當二叉樹的某個節點沒有左(右)孩子時,將左(右)指標域指向遍歷的上(下)乙個位置。
so,節點由三個域增加到五個域,增加兩個標誌位,標識左(右)孩子指向的是左(右)子樹,還是遍歷的上(下)乙個位置。
typedef int elementtype;
struct node;
typedef node* head;//指向樹根root
typedef node* tree;//指向線索樹的根節點
二.求節點的next位置
如果某節點無右子樹,則next位置為遍歷的下乙個節點,如果有右子樹,則next位置為右子樹的最左節點。
//中根遍歷的下乙個節點
node* innext(node* p)
//中根遍歷的上乙個節點
node* inpre(node* p)
三.線索樹中序遍歷
有了next函式,中序遍歷變得非常簡單了。
void thinorder(head h)//注意head不是樹根,而是指向樹根
while(temp!=h);
}
今天就到這裡啦~~~
二叉樹中序遍歷線索完整實現
ifndef rtagtree h included define rtagtree h included typedef enum tag link 0,thread 1 typedef char datatype typedef struct node node,bitreenode void ...
線索化二叉樹的中序遍歷
實現 package tree.threadedbinarytree public class threadedbinarytree hreonode root newhreonode 1 宋江 hreonode node2 newhreonode 3 吳用 hreonode node3 newhr...
樹的遍歷 先序遍歷 中序遍歷 後序遍歷
名詞解釋 1 每個元素稱為節點 2 有乙個特定的節點被稱為根節點或樹根 3 除根節點外的其餘資料元素被分為m個互不相交的集合t1,t2,t3.tm 1,其中每乙個集合ti本身也是乙個樹,被稱作原樹的子樹 節點的度 乙個節點含有子樹的個數稱為該節點的度 葉節點或終端節點 度為0的節點稱為葉節點 非終端...