यह एक होमवर्क प्रश्न है, इसलिए मैं एक पूर्ण कोड उत्तर नहीं ढूंढ रहा हूं।बेसिक ऐरे [] जावा में पेड़ डेटा-संरचना
मैं एक वर्ग कुत्ता
package lab12;
import java.io.Serializable;
public class Dog implements Serializable{
public Dog[] children;
public String name;
public Dog(String name)
{
this.name = name;
}
@Override
public String toString()
{
return name;
}
}
और एक datafile कि एक सरणी में संग्रहीत अपने बच्चों है कि एक जड़ कुत्ते स्पॉट शामिल दिये गये हैं। मुझे कोड लिखने की ज़रूरत है जो डेटाफाइल खोल सकता है, और उसके बाद पेड़ डेटा संरचना के माध्यम से कदम देख सकता है यह देखने के लिए कि कोई इनपुट नाम रूट (स्पॉट) का वंशज है या नहीं।
मुझे पूरा विश्वास है कि मैं डेटाफाइल खोल सकता हूं। मैं नोड्स बनाने के वाक्यविन्यास के साथ संघर्ष कर रहा हूं जिसमें लिंक के रूप में एक सरणी है। हमारी पाठ्यपुस्तक में केवल बाइनरी पेड़ शामिल हैं, जो या तो बाएं या दाएं से लिंक होते हैं, लेकिन लिंक की एक चर संख्या के लिए नहीं। मुझे एक सामान्य व्यक्ति का एक उदाहरण मिला जो एक सूची दृष्टिकोण का उपयोग करता है।
public class Tree<T>
{
private Node<T> root;
public static class Node<T>
{
private T data;
private Node<T> parent;
private List<Node<T>> children;
}
public Tree(T rootData)
{
root = new Node<T>();
root.data = rootData;
root.children = new ArrayList<Node<T>>();
}
}
जब से मैं datafile उपयोग करने के लिए मैं एक कुत्ता [] में बच्चों के भंडारण के अलावा और कुछ करने के लिए नोड की संरचना को बदल नहीं सकते हैं। मुझे बच्चों को स्टोर करने के लिए मूल सरणी का उपयोग करके नोड क्लास का एक उदाहरण नहीं मिल रहा है और मैं ऐसा करने के लिए वाक्यविन्यास नहीं समझ सकता। मुझे लगता है कि इससे सीखने की कोशिश करने से पहले यह जेनेरिक के बिना इसे देखने में मेरी समझ में मदद करेगा।
यहाँ अब तक मेरी कोड है:
package lab12;
public class DogTree
{
//Start Inner Class
private static class Node
{
private String name;
private Node parent;
private Node Dog[] children; //This is where I'm confused
}
//End Inner Class
private Node root;
public DogTree()
{
root = null;
}
public boolean isDescendant(String name)
{
return isInSubtree(name, root);
}
private static boolean isInSubtree(String name, Node subTreeRoot)
{
if(subTreeRoot == null)
{
return false;
}
else if(subTreeRoot.name.equals(name))
{
return true;
}
else
{
//This is where my confusion on the
//node design causes implementation problems
return isInSubtree(name, subTreeRoot.children);
}
}
}
आप अतिरिक्त डॉगट्री क्लास क्यों डिज़ाइन करना चाहते हैं? कुत्ते के वर्ग के साथ आपके पास पहले से ही पेड़ की संरचना है, क्योंकि कुत्ते में बच्चों की एक श्रृंखला होती है, जहां प्रत्येक बच्चा स्वयं कुत्ते के बच्चों की एक श्रृंखला है, जहां प्रत्येक बच्चे ... –
यह मदद कर सकता है - यह आपकी आवश्यकता से अधिक है - लेकिन आप चाहते हैं कि बिट्स उठाओ।आप अपनी खोज करने के लिए रिकर्सडेपथ को आसानी से संशोधित करने में सक्षम होना चाहिए। http://www.java2s.com/Code/Java/Collections- डेटा- संरचना /TreeNode.htm – xagyg
हमारा टेक्स्ट हमेशा प्रवेश कक्षा से नोड/सूची सेटअप के लिए एक अलग वर्ग बनाता है। मैंने कहा कि मैंने ऐसा इसलिए किया क्योंकि मैं कहीं परिचित से शुरू करने की कोशिश कर रहा हूं। – sage88