Hi,
//This is an urgent problem please care to read this... and help me..
//i have a simple tree , it has a root node followed by nodes below it.. the leafs have structs CLeaf and Nodes have struct CNode
//the nodes and leafs have structures as defined below...
//struct or class ddefinition..
CNode
{
int nNodeID;
int m_nWeight;
}
CLeaf
{
int m_nValue;
int m_nWeight;
int m_nLeafID;
}////
// problem is to calculate the numerical value of root node..
//this is done in the following code..
//the value of the node just above the leaf is calculated as
foreach(CLeaf Leaf in Leafs)
{
nVal+=Leaf.m_nWeight* Leaf .m_nValue; //nVal is the value of node right above these leaves..
}
//now once we have the value of this node , doing the same thing for all nodes at this level and adding their values would as a result give me the value of the node above these //nodes
Repeating the process would give the value of root node.. and problem solved,. i have wrote the code below,. which is explaining the same stuff i described.
//i want to write this algo or code in mathematical form, .. could any one help me write its mathematical form... ? would it be some functions? summations ? sets ? please help..
// main function
int main()
{
int RootNode=1; //root node id is 1,
int nValue=null;
GetNodeValue(RootNode,out nValue);
WriteOutPut("Value of Root node is :" nValue.ToString() );
}
//algo / function
//This function/procedure Fills the value of node with id nNodeID in nVal
public int GetNodeValue(int nNodeID,out int nVal)
{
nVal=0;
CNode[] Nodes=null;
if(GetNodesBelow(nNodeID,-1,out Nodes)==0) //returns the Nodes below the node with id =nNodeID
{
m_strError=this.GetLastError();
return 0;
}
if(Nodes.Length>0) //if we have nodes below nodes...
{
foreach(CNode Node in Nodes)
{
int nValue;
if(GetNodeValue(Node.m_nNodeID,out nValue)==0) //recursively call this function again..
{
m_strError=GetLastError();
return 0;
}
nVal+=Node.m_nWeight*nValue;
}
return 1;
}
else //else we have leafs below the node
{
CLeafsDB qdb=new CLeafsDB();
qdb.Connect(m_strConnectionString);
CLeaf[] Leafs=null;
if(qdb.GetLeafsBelow(nNodeID,out Leafs)==0) //gets the leafs under the node , returns 0 if no leafs
{
m_strError=qdb.GetLastError();
qdb.Disconnect();
return 0;
}
foreach(CLeaf Leaf in Leafs)
{
nVal+=Leaf.m_nWeight* Leaf .m_nValue;
}
qdb.Disconnect();
}
return 1;
}
Thank you so much in advance,..