二叉排序樹,眾所周知,左子樹都比根小,右子樹都比根大。
當看到這個題時,突然腦子短路,因為看到好幾組判斷資料,感覺要有好幾個樹,所以就不知道該有多少struct *型別。
還好,腦子一會兒恢復了正常,知道只需要2個struct *即可,因為每判斷完一組,另乙個struct *就可以重新利用。
最後講解一下為什麼可以這麼return:
return tougou(head-> lchild, head1-> lchild) && tougou(head-> rchild, head1-> rchild);
中間我加了個&&表示當前一次呼叫與後一次呼叫後結果全為1則才返回1,其他的情況全返回0.
time limit: 400 ms memory limit: 65536 kib
submit
statistic
problem description
對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成一樣的二叉排序樹。
input
輸入包含若干組測試資料。每組資料的第1行給出兩個正整數n (n < = 10)和l,分別是輸入序列的元素個數和需要比較的序列個數。第2行給出n個以空格分隔的正整數,作為初始插入序列生成一顆二叉排序樹。隨後l行,每行給出n個元素,屬於l個需要檢查的序列。
簡單起見,我們保證每個插入序列都是1到n的乙個排列。當讀到n為0時,標誌輸入結束,這組資料不要處理。
output
對每一組需要檢查的序列,如果其生成的二叉排序樹跟初始序列生成的二叉排序樹一樣,則輸出"yes",否則輸出"no"。
sample input
4 2sample output3 1 4 2
3 4 1 2
3 2 4 1
2 12 1
1 20
yesnono
#includeusing namespace std;
struct node
*head, *head1;
struct node *cbtree(struct node *head, int x)
else
else
}return head;
}int tougou(struct node *head, struct node *head1)
else if(head && head1)
else
}else
}int main(void)
while(l--)
if(tougou(head, head1))
else}}
return 0;
}
資料結構實驗之查詢一 二叉排序樹
對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成一樣的二叉排序樹。輸入包含若干組測試資料。每組資料的第1行給出兩個正整數n n 10 和l...
資料結構實驗之查詢一 二叉排序樹
time limit 400ms memory limit 65536k 有疑問?點這裡 對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成...
資料結構實驗之查詢一 二叉排序樹
time limit 400ms memory limit 65536k 有疑問?點這裡 對應給定的乙個序列可以唯一確定一棵二叉排序樹。然而,一棵給定的二叉排序樹卻可以由多種不同的序列得到。例如分別按照序列和插入初始為空的二叉排序樹,都得到一樣的結果。你的任務書對於輸入的各種序列,判斷它們是否能生成...