मैं एक साक्षात्कार प्रश्न हल करने की कोशिश कर रहा था, लेकिन इसके लिए मुझे बाइनरी पेड़ स्तर को स्तर से यात्रा करना है। मैं चरब्रेडथ-प्रथम ट्रैवर्सल
private object data;
private BinaryNode left;
private BinaryNode right;
नीचे होने किसी ने मेरे BinarySearchTree वर्ग के अंदर BreadthFirstSearch विधि लिखने के लिए मदद कृपया सकते हैं साथ BinaryNode डिज़ाइन किया गया है?
अद्यतन: आपके इनपुट के लिए सभी को धन्यवाद। तो यह साक्षात्कार सवाल था। "एक बाइनरी खोज पेड़ को देखते हुए, एक एल्गोरिदम तैयार करें जो प्रत्येक गहराई पर सभी नोड्स की एक लिंक की गई सूची बनाता है (यानी, यदि आपके पास गहराई डी वाला पेड़ है, तो आपके पास डी लिंक्ड सूचियां होंगी)"।
यहां मेरा तरीका है, मुझे अपनी विशेषज्ञ टिप्पणी बताएं।
public List<LinkedList<BNode>> FindLevelLinkList(BNode root)
{
Queue<BNode> q = new Queue<BNode>();
// List of all nodes starting from root.
List<BNode> list = new List<BNode>();
q.Enqueue(root);
while (q.Count > 0)
{
BNode current = q.Dequeue();
if (current == null)
continue;
q.Enqueue(current.Left);
q.Enqueue(current.Right);
list.Add(current);
}
// Add tree nodes of same depth into individual LinkedList. Then add all LinkedList into a List
LinkedList<BNode> LL = new LinkedList<BNode>();
List<LinkedList<BNode>> result = new List<LinkedList<BNode>>();
LL.AddLast(root);
int currentDepth = 0;
foreach (BNode node in list)
{
if (node != root)
{
if (node.Depth == currentDepth)
{
LL.AddLast(node);
}
else
{
result.Add(LL);
LL = new LinkedList<BNode>();
LL.AddLast(node);
currentDepth++;
}
}
}
// Add the last linkedlist
result.Add(LL);
return result;
}
क्या आप अब तक की कोशिश की? क्या आप सादे अंग्रेजी में समझा सकते हैं, एल्गोरिदम क्या करना चाहिए (यानी छद्म कोड दें)? – Davidann
विकिपीडिया पर सावधानी बरतने के लिए कैसे? http://en.wikipedia.org/wiki/Breadth-first_search –