下面算法實現,用一棵二叉樹中的結點建立一個按關鍵字值從小到大次序排列的帶表頭結點的雙向循環(huán)鏈表。二叉樹的結點結構如下所示:
其中,p是指向結點的指針;p->key表示結點的關鍵字域,p->left和p->right分別表示結點的左、右孩子的指針域。
void fromtreetolist(p,l)
/*p,h是指向二叉樹中結點的指針,*/
/*l是指向雙向循環(huán)鏈表表頭結點的指針*/
{if (p!=NULL)
{ fromtreetolist(p->left,l);
fromtreetolist(p-> right,l);
h=l;
while (h->right!=l)&&(h->right->key
p->right=h->right;
p->left=h;
();
h->rihght=p;
}
}
void buildlisttree(root,l)
/*root是指向二叉樹根結點的指針,*/
/*l是指向雙向循環(huán)鏈表表頭結點的指針*/
{l=(struct nodetype *)malloc(sizeof(struct nodetype));
l->left=l;
l->right=l;
fromtreetolist(root,l);
}
您可能感興趣的試卷
你可能感興趣的試題
最新試題
實現二分查找的遞歸章法如下,在相應位置填寫適當的內容使算法完整。
一棵二叉樹的先序序列是:CEDBA,中序序列是:DEBAC ,則該二叉樹的后序序列是()
若無向圖中任意兩個不同的頂點間都有路徑,則稱該圖為()。
某圖的鄰接表存儲結構如下圖所示,則從6號點出發(fā),深度優(yōu)先遍歷的序列是()
若三維數組a[4][5][6]的基地址是100,每個元素占用2個存儲單元,則數組a中最后一個元素的存儲地址是()。
只要無向圖中有權重相同的邊,其最小生成樹就不可能唯一。
頭指針為L的帶頭結點的雙循環(huán)鏈表,結點的前趨指針域為prior,后繼指針域為next,判斷該鏈表為空的條件是()。
已知某二叉樹的后序遍歷序列是CEFDBA,中序遍歷序列是CBEDFA。與該二叉樹對應的樹或森林中,葉子的數目是()個。
已知二叉樹用二叉鏈表存儲,則若實現二叉樹實現左右子樹交換,可以借助改寫()遍歷算法實現。
已知帶頭結點的鏈隊列指針Q,則該隊列做新元素結點s進隊操作的語句是()