簡體   English   中英

AVL樹:向每個節點添加新字段:樹的“大小”,同時執行插入操作

[英]AVL tree : adding a new field to each node : the “size” of its tree , while Insert action

我在將新元素插入AVL樹時嘗試更新Insert動作。 insert動作的更新將為每個節點增加其根目錄樹的大小。

現在,因為我自下而上插入了元素,所以如果我僅在巡回旅行時為通過的每個節點添加+1 ,則在某些情況下將無法正常工作,例如,當我需要在新樹是不平衡的,因為我改變了指針,那么計算將是不正確的。

任何想法或提示,我該如何正確地做到這一點?

一個簡單的解決方案是僅通過定義大小來修改它。

設置葉子的size = 1 ,並為作為根之旅的一部分或作為卷的一部分(從buttom向上)的每個節點設置:

size(v) = size(v.left) + size(v.right) + 1
            ^                 ^          ^
        size of left     size of right   size of "root"
           subtree        subtree     

這將是正確的,因為您在每個步驟中都修改了所有已更改的頂點,並且由於要進行自頂向下的操作,因此可以為您修改的每個節點正確計算大小。

請注意,它不會影響復雜性,因為對於每個這樣的頂點-您執行的操作數是恆定的,並且僅對要遍歷的頂點進行操作。

暫無
暫無

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

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