資料結構作業12—樹和森林(程式填空題)
阿新 • • 發佈:2018-12-23
5-1下列程式碼的功能是計算給定二叉樹T的寬度。二叉樹的寬度是指各層結點數的最大值。函式Queue_rear和Queue_front分別返回當前佇列Q中隊尾和隊首元素的位置。
typedef struct TreeNode *BinTree; struct TreeNode { int Key; BinTree Left; BinTree Right; }; int Width( BinTree T ) { BinTree p; Queue Q; int Last, temp_width, max_width; temp_width = max_width = 0; Q = CreateQueue(MaxElements); Last = Queue_rear(Q); if ( T == NULL) return 0; else { Enqueue(T, Q); while (!IsEmpty(Q)) { p = Front_Dequeue(Q);
temp_width++
if ( p->Left != NULL ) Enqueue(p->Left, Q);
if(p->Right!=NULL) Enqueue(p->Right, Q)
if ( Queue_front(Q) > Last ) {
Last = Queue_rear(Q);
if ( temp_width > max_width ) max_width = temp_width;
temp_width = 0
} /* end-if */ } /* end-while */ return max_width; } /* end-else */ }
作者: 陳越
單位: 浙江大學
時間限制: 400 ms
記憶體限制: 64 MB