■90700 / inTopicNo.1) |
多分木の要素探索 |
□投稿者/ ふぐり (1回)-(2019/04/09(Tue) 17:36:08)
|
分類:[C#]
多分木の要素探索
Unity(C#)を使っています
多分木から要素を検索する再帰的プログラムを作っているのですがうまく動きません。
以下のサイトを参考にして子要素の数を数えるプログラムは動作したのですが
特定の要素を持つノードを検索するプログラムがうまくいかず無限ループしています。
参考サイト:http://monakaice88.hatenablog.com/entry/20131215/1387113494
多分木のノード
public class TreeNode
{
public TreeNode parent; //親要素
public int element; //自身の要素
public List<TreeNode> childList; //子要素番号リスト
:
:
:
×要素探索メソッド呼び出し
public TreeNode searchNode(int no)
{
return __searchChild(this, no);
}
×要素探索メソッド(再帰)
private static TreeNode __searchChild(TreeNode parent, int no)
{
Debug.Log("search "+parent.element +":"+no);
if (parent.element == no)
{
return parent;
}
else
{
if (parent.hasChild())
{
foreach (TreeNode child in parent.childList)
{
TreeNode t = __searchChild(child, no);
if (t != null)
{
return t;
}
}
}
}
return null;
}
〇子要素の数を取得するプログラム 呼び出し側
public int getAllChildCount()
{
int counter = -1;//自身の分マイナス
__getChildNodeCount(this, ref counter);
return counter;
}
〇子要素を取得するプログラム 再帰
private static void __getChildNodeCount(TreeNode node, ref int count)
{
count++;
//子要素がある場合
if (node.hasChild())
{
foreach(TreeNode child in node.childList)
{
__getChildNodeCount(child, ref count);
}
}
}
間違っている部分のご指摘やアドバイスお願いします
|
|