के माध्यम से इंटीजर बाइनरी ट्री का आकार निर्धारित करें मेरे पास बाएं और दाएं बच्चे और बाइनरी ट्री (इंट रूटवेल) के साथ बाइनरी ट्रीनोड रूट के साथ बाइनरी ट्रीनोड रूट (रूट वैल्यू) है जिसमें रूट वैल इसके मूल्य के रूप में है। मैं पेड़ में नोड्स (कक्षा BinaryTreeNode में) की संख्या की गणना करने के लिए एक कोड विकसित की है, लेकिन यह एक NullPointerException की वजह से काम नहीं करता है:रिकर्सन
public int size(){
if(this == null) { // base case
return 0;
} else {
return 1 + left.size() + right.size();
}
}
हालांकि एक और समाधान मैंने पाया, एक ऐसी ही रणनीति के साथ, काम करता है :
public int size(BinaryTreeNode refNode){
if(refNode == null) { // base case
return 0;
} else {
return 1 + size(refNode.left) + size(refNode.right);
}
}
मुझे समझ में आया है कि मेरा कोड अपवाद क्यों फेंकता है (ऐसा इसलिए है क्योंकि बाएं/दाएं शून्य को इंगित करेंगे)। लेकिन मैं समझना चाहता हूं कि दूसरा समाधान समान सिद्धांत के साथ काम करता है। अग्रिम धन्यवाद!
दूसरे संस्करण में काम करता है क्योंकि आप अशक्त पर एक विधि कॉल करने की कोशिश नहीं करते हैं, आप बस समारोह में शून्य पास करते हैं। और सबसे पहले यदि आप जानते हैं कि refNode शून्य नहीं है – wastl