簡體   English   中英

給定大的樹結構,是否有一種有效的算法可以對樹進行查詢或過濾?

[英]Given a large tree structure, is there an efficient algorithm to do querying or filtering on the tree?

假設我想要所有其父代符合某些條件的節點。

除了檢查每個節點並構建一個充滿節點或子樹的結果對象之外,還有其他可接受的方法嗎?

如果尚未根據某種搜索條件對樹進行排序或索引,那么您將無法修剪樹的遍歷(例如,您無法決定在某個特定節點上不接受合適的孩子)。 因此,您別無選擇,只能遍歷整個樹。

就是這樣。 您只需訪問每個節點即可查看其是否符合條件。

但是有一些方法可以加快速度:

  • 使用索引。 如果您反復查詢同一屬性,則在該屬性上創建索引並用於搜索可能會有所幫助。 這可以極大地加快代碼的速度。 但是,這樣做並不是免費的:您需要預先計算索引,每次更新樹時都要更新索引,並且需要更多內存來保留它。
  • 如果您有多核計算機,則可以使用單獨的線程並行處理各個子樹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM