अरे, मैं अपनी होमवर्क समस्याओं में से एक को सरल बनाने और कोड को थोड़ा बेहतर बनाने की कोशिश कर रहा हूं। मैं जो काम कर रहा हूं वह एक बाइनरी सर्च पेड़ है। अभी मेरे पास Tree()
कक्षा में एक फ़ंक्शन है जो सभी तत्वों को पाता है और उन्हें एक सूची में रखता है।डिफ़ॉल्ट पैरामीटर के रूप में self.xxxx का उपयोग करना - पायथन
tree = Tree()
#insert a bunch of items into tree
तो मैं पेड़ से सभी नोड्स लेने के लिए अपने मेकलिस्ट() फ़ंक्शन का उपयोग करता हूं और उन्हें एक सूची में रखता हूं। makeList()
फ़ंक्शन को कॉल करने के लिए, मैं tree.makeList(tree.root)
करता हूं। मेरे लिए यह थोड़ा दोहराया जाता है। मैं पहले ही पेड़ वस्तु को tree.
से बुला रहा हूं, इसलिए tree.root
बस थोड़ा टाइपिंग का अपशिष्ट है।
अभी makeList समारोह है:
def makeList(self, aNode):
if aNode is None:
return []
return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild)
मैं एनोड इनपुट एक डिफ़ॉल्ट पैरामीटर जैसे aNode = self.root
(जो काम नहीं करता है) कि जिस तरह से मैं इस के साथ समारोह चला सकते हैं, tree.makeList()
बनाने के लिए करना चाहते हैं।
पहला सवाल यह है कि, यह क्यों काम नहीं करता है?
दूसरा सवाल यह है कि क्या यह एक तरीका है कि यह काम कर सकता है? जैसा कि आप देख सकते हैं makeList()
फ़ंक्शन रिकर्सिव है इसलिए मैं फ़ंक्शन की शुरुआत में कुछ भी परिभाषित नहीं कर सकता या मुझे अनंत लूप मिलता है।
संपादित यहाँ के रूप में अनुरोध सभी कोड है:
class Node(object):
def __init__(self, data):
self.data = data
self.lChild = None
self.rChild = None
class Tree(object):
def __init__(self):
self.root = None
def __str__(self):
current = self.root
def isEmpty(self):
if self.root == None:
return True
else:
return False
def insert (self, item):
newNode = Node (item)
current = self.root
parent = self.root
if self.root == None:
self.root = newNode
else:
while current != None:
parent = current
if item < current.data:
current = current.lChild
else:
current = current.rChild
if item < parent.data:
parent.lChild = newNode
else:
parent.rChild = newNode
def inOrder(self, aNode):
if aNode != None:
self.inOrder(aNode.lChild)
print aNode.data
self.inOrder(aNode.rChild)
def makeList(self, aNode):
if aNode is None:
return []
return [aNode.data] + self.makeList(aNode.lChild) + self.makeList(aNode.rChild)
def isSimilar(self, n, m):
nList = self.makeList(n.root)
mList = self.makeList(m.root)
print mList == nList
मॉड्यूल स्तर विधि के भीतर आप 'स्वयं' के साथ क्या चाहते हैं? यह बिल्कुल कोई सघन नहीं बनाता है। यदि makeList2() कक्षा का एक तरीका है तो कृपया संदर्भ के बिना सही कोड प्रदान करें और स्निपेट न करें। –
makeList2() को बनाने का अनुमान था(), मैंने इसे संपादित किया – crh878
इसका कोई अर्थ नहीं है? मैं इसे कॉल करने के बजाय पेड़ की जड़ के लिए डिफ़ॉल्ट पैरामीटर का उपयोग कर अपने मेकलिस्ट() फ़ंक्शन को सरल बनाने का प्रयास कर रहा हूं। – crh878