2017-06-19 96 views
2

我知道檢查給定二叉樹是否是二叉搜索樹的算法。但考慮到樹不是完全駐留在同一臺機器上,而是分佈在多臺機器上,我該如何處理這種情況?在單機上,我在樹的每個節點上使用範圍檢查方法來檢查它是否爲BST。有沒有我可以閱讀的資源來處理這種數據不一定在同一個系統上的問題?二叉樹是二叉搜索樹,如果樹分佈在多臺機器上

+0

我認爲如果您還告訴了出現這種問題的位置會更好。 –

+0

當BST在多臺機器上拆分時,爲什麼認爲「範圍檢查方法」會成爲問題?我還沒有聽說過「範圍檢查方法」,但它聽起來像遞歸地將左右邊界傳遞給任何給定子樹的直觀方法(通過訪問每個節點來解決問題),這可以並行處理。 – Dukeling

回答

1

BST有一個屬性。這是每個孩子也將是一個BST。驗證所有機器的二叉樹,一旦你有每臺機器的BT是BST,然後得到每臺機器的BT的根節點,然後再次驗證樹,如果它是根節點的BST。

+0

好洞察!我認爲這是我正在尋找的。 – user2532344

+0

另一種方法可能是..BST inorder給你排序列表。只需在每個節點的BT處進行inorder遍歷並檢查它是否已排序,如果不是,則返回false,否則,從每臺機器獲取根節點並驗證BST。 –