Nasıl verimli bir şekilde düz bir yapıdan bir ağaç oluşturmak için?
Düz bir yapı nesneleri bir grup var. Bu nesneler, ağaçlar yerleştirilmiş olabilir ID
ParentID
bir özelliği var. Özel bir sırada.
ParentID
her özelliğin mutlaka yapısında ID
ile uyuşmuyor. Bu nedenle onların çeşitli ağaçlar bu nesnelerin içinden çıkan olabilir.
Nasıl bu nesneleri elde edilen ağaç oluşturma işlemi istiyorsunuz ?
Şimdiye kadar bir çözüm ama en uygun o kadar emin değilim...
Doğru sırayla bir veritabanı içine Veri eklemek için bu ağaçları oluşturmak için ihtiyacım var.
Döngüsel başvurular var. Bir Düğüm ParentID diğer nesneleri bulunamıyor zaman zaman ParentID == null) veya bir RootNode
CEVAP
Karma tablo belirli nesne eşleme nesnelerin Kimliklerini saklamak. Tüm nesneleri numaralandırma ve eğer varsa, üst bulmak ve üst işaretçi buna göre güncelleyin.
class MyObject
{ // The actual object
public int ParentID { get; set; }
public int ID { get; set; }
}
class Node
{
public List<Node> Children = new List<Node>();
public Node Parent { get; set; }
public MyObject AssociatedObject { get; set; }
}
IEnumerable<Node> BuildTreeAndGetRoots(List<MyObject> actualObjects)
{
Dictionary<int, Node> lookup = new Dictionary<int, Node>();
actualObjects.ForEach(x => lookup.Add(x.ID, new Node { AssociatedObject = x }));
foreach (var item in lookup.Values) {
Node proposedParent;
if (lookup.TryGetValue(item.AssociatedObject.ParentID, out proposedParent)) {
item.Parent = proposedParent;
proposedParent.Children.Add(item);
}
}
return lookup.Values.Where(x => x.Parent == null);
}
Nasıl verimli bir şekilde anahtarları/...
En verimli şekilde sıfır JavaScript di...
Nasıl verimli bir şekilde Gidip dizele...
Nasıl bir sütun değeri tekrarlarını SQ...
Gelen İnputStream oluşturmak için en v...