एल्गोरिदम तीसरे संस्करण के परिचय में उनके पास लाल-काले पेड़ हटाने का एक छद्म कोड कार्यान्वयन है। यहाँ यह है ...लाल काला पेड़ छद्म कोड रिडंडेंसी
RB-DELETE(T, z)
y = z
y-original-color = y.color
if z.left == T.nil
x = z.right
RB-TRANSPLANT(T, z, z.right)
elseif z.right == T.nil
x = z.left
RB-TRANSPLANT(T, z, z.left)
else
y = TREE-MINIMUM(z.right)
y-original-color = y.color
x = y.right
if y.p == z
x.p = y // <--------- why????
else
RB-TRANSPLANT(T, y, y.right)
y.right = z.right
y.right.p = y
RB-TRANSPLANT(T, z, y)
y.left = z.left
y.left.p = y
y.color = z.color
if y-original-color == BLACK
RB-DELETE-FIXUP(T, x)
वृक्ष-न्यूनतम सिर्फ एक पेड़ में सबसे छोटा मान पाता है, आरबी प्रत्यारोपण दूसरा पैरामीटर की मूल लेता है और यह तीसरे पैरामीटर के लिए बिंदु है, और तीसरे पैरामीटर के माता-पिता है दूसरे पैरामीटर के माता-पिता बनें।
मेरी टिप्पणी से, वे परीक्षण करते हैं कि y.p z है और यदि ऐसा है तो x.p से y सेट करें। लेकिन एक्स पहले से ही y.right है, तो यह y.right.p = y कहने जैसा है, लेकिन y.right.p पहले से ही y है! वे ऐसा क्यों कर रहे हैं?
यहाँ अपने विवरण है ...
"जब y के मूल माता पिता z है, तथापि, हम नहीं x.p y के मूल माता पिता को इंगित करना चाहते हैं, क्योंकि हम पेड़ से उस नोड निकाल रहे हैं। नोड y, लाइन में y के लिए XP की स्थापना 13 कारणों XP y के माता-पिता की मूल स्थिति को इंगित करने के पेड़ में जेड के स्थान लेने के लिए, भले ही एक्स == T.nil
तो चले जाएँगे क्योंकि। " वे एक्स के माता-पिता को y होना चाहते हैं ... यह पहले से ही y है ...
आह मैं देखता हूं! लाइट बल्ब। यही उनका मतलब था जब उन्होंने कहा कि वे इस तथ्य का लाभ उठाने जा रहे थे कि टी.निल नोड ने बाएं, दाएं और माता-पिता के गुण छोड़े हैं। धन्यवाद! – confused
बस दूसरों को स्पष्टीकरण देने के लिए, टी.एनिल नोड है जो पेड़ में सभी पत्ती नोड्स का प्रतिनिधित्व करता है। इसके बिना, आपके पास ओ (2^एच) शून्य पत्तियां होंगी, जो अंतरिक्ष की बर्बादी है। टी.निल के गुण, बाएं, दाएं, और माता-पिता, मनमानी हैं। तो जब x = y.right, यदि x = t.nil, तो x का पैरेंट y नहीं होगा। यदि अंतिम कॉल आरबी-डिलीट-फ़िक्सअप (टी, एक्स) ठीक से काम करना है, तो इसे y पर सेट करने की आवश्यकता है। – confused