मैं एक अभ्यास साक्षात्कार सवाल जो मुझसे कहता है कि अगर एक पेड़ एक संतुलित खोज पेड़ है या नहीं की पुष्टि करने और आपको सत्यापन विधि देना है कि क्या ... मैंसत्यापित किया जा रहा एक पेड़ BST या नहीं अजगर
Class Node:
def __init__(self, k, val):
self.key = k
self.value = val
self.left = None
self.right = None
के रूप में वर्ग है पेड़ अधिकतम और के रूप में न्यूनतम मूल्यों के लिए
और अन्य समारोह परिभाषाओं
def tree_max(node):
maxleft = float('-inf') if not node.left else tree_max(node.left)
maxright = float('-inf') if not node.right else tree_max(node.right)
return max(node.value, maxleft, maxright)
def tree_min(node):
minleft = float('-inf') if not node.right else tree_min(node.left)
minright = float('-inf') if not node.left else tree_min(node.right)
return min(node.value, minleft, minright)
मेरे सत्यापन विधि के रूप में
def verify(node):
if tree_max(node.left) <= node.value and node.value <= tree_min(node.right):
if verify(node.left) and verify(node.right):
return True
else:
return False
else:
return False
मेरी समस्या तब होती है जब मैं सत्यापन विधि को लागू करने का प्रयास करता हूं, जब भी मैं एक बीएसटी पेड़ बनाने की कोशिश करता हूं तब भी मुझे झूठा लगता है। मेरे कार्यान्वयन इस प्रकार है:
root= Node(10, "Hello")
root.left = Node(15, "Fifteen")
root.right= Node(30, "Thirty")
print verify(root)
root = Node(10, "Ten")
root.right = Node(20, "Twenty")
root.left = Node(5, "Five")
root.left.right = Node(15, "Fifteen")
print verify(root)
दोनों मुझे झूठी दे रहे हैं ... वहाँ मेरा सत्यापन समारोह या मेरे न्यूनतम/अधिकतम समारोह के साथ एक समस्या है ... किसी भी मदद की सराहना की जाएगी।
क्या पेड़ संतुलित होना चाहिए या नहीं? क्योंकि आमतौर पर बीएसटी = * बाइनरी * खोज पेड़ और नहीं * संतुलित * खोज पेड़। आपका एल्गोरिदम यह जांचने के लिए प्रतीत नहीं होता है कि पेड़ संतुलित है या नहीं ... – Bakuriu
मुझे लगता है कि समस्या इस तथ्य से संबंधित है कि 'node.value' एक स्ट्रिंग है और आप 'float (' - inf ')' सेंटीनेल के रूप में उपयोग कर रहे हैं । – Bakuriu