baobao
9/15/2013 - 3:48 PM

ツリー構造を表示する処理を作り中

ツリー構造を表示する処理を作り中

function tree(str:String):void
{
  var trees:Array = str.split(",");
	var retisters:Array = [];
	var map:Object = {};
	for (var i:int = 0; i < trees.length; i++)
	{
		var t:String = trees[i];
		var temp:Array = t.split("/");
		
		if (i == 0)
		{
			// 初回はそのまま登録
			retisters[i] = temp;
		}
		else
		{
			retisters = checkArray(retisters, temp, i);
		}
	}
	for (i = 0; i < retisters.length; i++)
	{
		trace(retisters[i]);
	}
}


function checkArray(registers:Array, nexts:Array, index:int):Array
{
	trace("nexts::" + nexts, index);
	var checkArray:Array = registers.concat();
	for (var i:int = 0; i < checkArray.length; i++)
	{
		var pattern:Array = checkArray[i];
		if (pattern == null) return registers;
		
		for (var j:int = 0; j < pattern.length; j++)
		{
			var key:String = pattern[j];
			if (nexts[j] == null)
			{
				trace("break::" ,i, j);
				return registers;
			}
			else
			{
				if (key != nexts[j])
				{
					// 登録されていなかったら
					if (registers[index] == null)
					{
						registers[index] = [nexts[j]];
					}
					else
					{
						registers[index].push(nexts[j]);
					}
				}
				else
				{
					// 登録されていたら
					if (registers[index] == null)
					{
						registers[index] = ["|__|"];
					}
					else
					{
						registers[index].push("|__|");
					}
				}
			}
			
		}
		
	}
	return registers;
}

tree("a/b/c,a/b/d,a/h,a/h/g");