/ / कैसे एक बाइनरी खोज ट्री को पुन: प्राप्त करने के लिए, प्रत्येक नोड को एक ArrayList [बंद] - जावा, एल्गोरिथ्म, रिकर्सियन से जोड़कर

एक बाइनरी खोज पेड़ को दोबारा कैसे घुमाएं, प्रत्येक नोड को एक ऐरेलिस्ट [बंद] में जोड़ना - जावा, एल्गोरिदम, रिकर्सन

मैं एक द्विआधारी खोज का पता लगाने के लिए एक विधि लिख रहा हूंपेड़ पुनरावर्ती। यह प्रत्येक नोड पर जाएगा और जैसा कि यह करता है, इसे एक ArrayList में जोड़ें। इसलिए जब तक सभी नोड्स का दौरा नहीं किया जाता है, तब तक वे "एरेलेस्ट में जा रहे हैं।

मैंने निम्नलिखित लिखा है, लेकिन यह काम नहीं कर रहा है और मुझे समझ में नहीं आता कि क्यों।

यहाँ किसी भी मदद की बहुत सराहना की जाएगी।

विधि इस प्रकार है:

/**
* Traverse a Binary Search Tree and append each node to an ArrayList.
*
* @param n - this.root of the Binary Search Tree
* @return - a ListArray of ALL nodes in the calling Binary Search Tree
*/
private List<TreeNode> traverse( TreeNode n ) {

List<TreeNode> listOfNodes = new ArrayList<TreeNode>();

if (n == null)
return listOfNodes;

listOfNodes.add(n);

traverse(n.left);
traverse(n.right);

return listOfNodes;

}

बहुत धन्यवाद।

उत्तर:

जवाब के लिए 2 № 1

किसी भी मामले में, आपको लगभग समाधान मिल गया, लेकिन आप अपने पुनरावर्ती कॉल के परिणाम का उपयोग नहीं करते हैं। जब तुमने फोन किया traverse(n.left) तथा traverse(n.right) आपको इन कॉल के परिणाम को अपने में जोड़ना चाहिए listOfNodes