

function CTree()
{
	CTree_Constructor(this);
}

function CTree_Constructor(_this)
{
	CCommonTree_Constructor(_this);

	_this.m_nMaxId = 1;

	_this.FindPath = CTree_FindPath;
	_this.FindPathFromPointer = CTree_FindPathFromPointer;
	_this.FindLeaf = CTree_FindLeaf;
	_this.FindLeafFromPointer = CTree_FindLeafFromPointer;
}

function CTree_FindPath(nId)
{
	return this.FindPathFromPointer(nId, this);
}

function CTree_FindPathFromPointer(nId, p)
{
	var arThis = new Array(p);
	if(p.m_nId == nId) return arThis;
	for(i in p.m_arLeafs)
	{
		ar = this.FindPathFromPointer(nId, p.m_arLeafs[i]);
		if(ar[0]) return ar.concat(arThis);

	}
	return new Array();
}

function CTree_FindLeaf(nId)
{
	return this.FindLeafFromPointer(nId, this);
}

function CTree_FindLeafFromPointer(nId, pLeaf)
{
	if(pLeaf.m_nId == nId) return pLeaf;
	for(i in pLeaf.m_arLeafs)
	{
		ptLeaf = this.FindLeafFromPointer(nId, pLeaf.m_arLeafs[i]);
		if(ptLeaf) return ptLeaf;
	}
	return null;
}


