私は多くの検索を行ってきましたが、既存のソリューションのどれも正確な問題を解決していません。リストがあります:
Input[] inputs = new Input[]
{
new Input(1),
new Input(3,1),
new Input(19,3),
new Input(22,1),
new Input(4,1),
new Input(5,22),
};
現在動作しない BuildTree() の宣言は次のとおりです。
public TreeNode BuildTree(IEnumerable<Input> inputs, TreeNode parentNode = null)
{
List<Input> nodes = inputs.ToList<Input>();
foreach (Input node in nodes)
{
TreeNode newNode = new TreeNode(node.Id);
if (parentNode == null)
{
parentNode = BuildTree(nodes, newNode);
}
else
{
parentNode.AddChild(newNode);
}
}
return parentNode;
}
BuildTree の呼び出しは次のとおりです。
TreeNode rootNode = BuildTree(inputs);
したがって、BuildTree 関数は、ツリーを構築した後にツリーのルートを返す必要があります。入力をループしてみました。各反復でリストから最初の入力を削除しようとしました。私はそれを理解することはできません。どんな助けでも大歓迎です!ありがとうございました!