SNAP Library 2.0, Developer Reference
2013-05-13 16:33:57
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
|
#include <ds.h>
Public Member Functions | |
TTree () | |
TTree (const TTree &Tree) | |
TTree (TSIn &SIn) | |
void | Save (TSOut &SOut) const |
void | LoadXml (const PXmlTok &XmlTok, const TStr &Nm="") |
void | SaveXml (TSOut &SOut, const TStr &Nm) const |
TTree & | operator= (const TTree &Tree) |
bool | operator== (const TTree &Tree) const |
bool | operator< (const TTree &Tree) const |
int | GetPrimHashCd () const |
int | GetSecHashCd () const |
int | GetMemUsed () const |
void | Clr () |
int | AddNode (const int &ParentNodeId, const TVal &NodeVal=TVal()) |
int | AddRoot (const TVal &NodeVal=TVal()) |
int | GetNodes () const |
void | GetNodeIdV (TIntV &NodeIdV, const int &NodeId=0) |
int | GetParentNodeId (const int &NodeId) const |
int | GetChildren (const int &NodeId) const |
int | GetChildNodeId (const int &NodeId, const int &ChildN) const |
TVal & | GetNodeVal (const int &NodeId) |
void | GenRandomTree (const int &Nodes, TRnd &Rnd) |
void | DelNode (const int &NodeId) |
void | CopyTree (const int &SrcNodeId, TTree &DstTree, const int &DstParentNodeId=-1) |
void | WrTree (const int &NodeId=0, const int &Lev=0) |
Private Attributes | |
TVec< TTriple< TInt, TIntV, TVal > > | NodeV |
int TTree< TVal >::AddNode | ( | const int & | ParentNodeId, |
const TVal & | NodeVal = TVal() |
||
) | [inline] |
Definition at line 3346 of file ds.h.
References TVec< TVal, TSizeTy >::Add(), IAssert, TVec< TVal, TSizeTy >::Len(), and TTree< TVal >::NodeV.
Referenced by TTree< TVal >::AddRoot(), and TTree< TVal >::CopyTree().
{ IAssert(((ParentNodeId==-1)&&(NodeV.Len()==0))||(NodeV.Len()>0)); if (ParentNodeId!=-1){NodeV[ParentNodeId].Val2.Add(NodeV.Len());} return NodeV.Add(TTriple<TInt, TIntV, TVal>(ParentNodeId, TIntV(), NodeVal));}
Definition at line 3350 of file ds.h.
References TTree< TVal >::AddNode().
{ return AddNode(-1, NodeVal);}
Definition at line 3344 of file ds.h.
References TVec< TVal, TSizeTy >::Clr(), and TTree< TVal >::NodeV.
void TTree< TVal >::CopyTree | ( | const int & | SrcNodeId, |
TTree< TVal > & | DstTree, | ||
const int & | DstParentNodeId = -1 |
||
) |
Definition at line 3405 of file ds.h.
References TTree< TVal >::AddNode().
{ int DstNodeId=DstTree.AddNode(DstParentNodeId, GetNodeVal(SrcNodeId)); for (int ChildN=0; ChildN<GetChildren(SrcNodeId); ChildN++){ int ChildNodeId=GetChildNodeId(SrcNodeId, ChildN); if (ChildNodeId!=-1){ CopyTree(ChildNodeId, DstTree, DstNodeId); } } }
Definition at line 3394 of file ds.h.
References TVec< TVal, TSizeTy >::SearchForw().
{ if (NodeId==0){ Clr(); } else { TIntV& ChildNodeIdV=NodeV[GetParentNodeId(NodeId)].Val2; int ChildNodeIdN=ChildNodeIdV.SearchForw(NodeId); ChildNodeIdV[ChildNodeIdN]=-1; } }
void TTree< TVal >::GenRandomTree | ( | const int & | Nodes, |
TRnd & | Rnd | ||
) |
Definition at line 3382 of file ds.h.
References TRnd::GetUniDevInt().
{ Clr(); if (Nodes>0){ AddRoot(TVal()); for (int NodeN=1; NodeN<Nodes; NodeN++){ int ParentNodeId=Rnd.GetUniDevInt(0, GetNodes()-1); AddNode(ParentNodeId, TVal()); } } }
int TTree< TVal >::GetChildNodeId | ( | const int & | NodeId, |
const int & | ChildN | ||
) | const [inline] |
Definition at line 3357 of file ds.h.
References TTree< TVal >::NodeV.
{return NodeV[NodeId].Val2[ChildN];}
int TTree< TVal >::GetChildren | ( | const int & | NodeId | ) | const [inline] |
Definition at line 3356 of file ds.h.
References TVec< TVal, TSizeTy >::Len(), and TTree< TVal >::NodeV.
int TTree< TVal >::GetMemUsed | ( | ) | const [inline] |
Definition at line 3342 of file ds.h.
References TVec< TVal, TSizeTy >::GetMemUsed(), and TTree< TVal >::NodeV.
{return NodeV.GetMemUsed();}
void TTree< TVal >::GetNodeIdV | ( | TIntV & | NodeIdV, |
const int & | NodeId = 0 |
||
) |
Definition at line 3369 of file ds.h.
References TVec< TVal, TSizeTy >::Add(), and TVec< TVal, TSizeTy >::Clr().
{ if (NodeId==0){NodeIdV.Clr(); if (GetNodes()==0){return;}} else if (GetParentNodeId(NodeId)==-1){return;} NodeIdV.Add(NodeId); for (int ChildN=0; ChildN<GetChildren(NodeId); ChildN++){ int ChildNodeId=GetChildNodeId(NodeId, ChildN); if (ChildNodeId!=-1){ GetNodeIdV(NodeIdV, ChildNodeId); } } }
Definition at line 3353 of file ds.h.
References TVec< TVal, TSizeTy >::Len(), and TTree< TVal >::NodeV.
TVal& TTree< TVal >::GetNodeVal | ( | const int & | NodeId | ) | [inline] |
int TTree< TVal >::GetParentNodeId | ( | const int & | NodeId | ) | const [inline] |
int TTree< TVal >::GetPrimHashCd | ( | ) | const [inline] |
Definition at line 3339 of file ds.h.
References TVec< TVal, TSizeTy >::GetPrimHashCd(), and TTree< TVal >::NodeV.
{return NodeV.GetPrimHashCd();}
int TTree< TVal >::GetSecHashCd | ( | ) | const [inline] |
Definition at line 3340 of file ds.h.
References TVec< TVal, TSizeTy >::GetSecHashCd(), and TTree< TVal >::NodeV.
{return NodeV.GetSecHashCd();}
Definition at line 3335 of file ds.h.
References TTree< TVal >::NodeV.
Definition at line 3331 of file ds.h.
References TTree< TVal >::NodeV, and TVec< TVal, TSizeTy >::Save().
Definition at line 3416 of file ds.h.
{ for (int LevN=0; LevN<Lev; LevN++){printf("| ");} printf("%d (%d)\n", NodeId, GetChildren(NodeId)); for (int ChildN=0; ChildN<GetChildren(NodeId); ChildN++){ int ChildNodeId=GetChildNodeId(NodeId, ChildN); if (ChildNodeId!=-1){ WrTree(ChildNodeId, Lev+1); } } }
Definition at line 3326 of file ds.h.
Referenced by TTree< TVal >::AddNode(), TTree< TVal >::Clr(), TTree< TVal >::GetChildNodeId(), TTree< TVal >::GetChildren(), TTree< TVal >::GetMemUsed(), TTree< TVal >::GetNodes(), TTree< TVal >::GetNodeVal(), TTree< TVal >::GetParentNodeId(), TTree< TVal >::GetPrimHashCd(), TTree< TVal >::GetSecHashCd(), TTree< TVal >::operator=(), TTree< TVal >::operator==(), and TTree< TVal >::Save().