The tree structure looks like this:
Requirements: You need to retrieve one of the tree nodes by property and return a value.
Ideas:
list<intptr> ptrlist = new list<intptr> ();
IntPtr geteidtptr (IntPtr fatherptr)
{
if (the target child node is included in the Fathrptr)
return editptr;
Else
{
if (if the node has a next-level node)
{
Ptrlist.add (NEXTPTR);
Return Geteidtptr (NEXTPTR);
}
Else
{
Ptrlist.remove (FATHERPTR);
if (if Fatherptr exists sibling node)
{
Ptrlist.add (STANDPTR);
Return Geteidtptr (STANDPTR);
}
Else
{
if (Ptrlist.count = = 0)
return IntPtr.Zero;
Else
{
IntPtr f = getupptr ();
Return geteidtptr (f);
}
}
}
}
}
IntPtr getupptr ()
{
IntPtr fatherPtr1 = ptrlist[ptrlist.count-1];
Ptrlist.remove (FATHERPTR1);
IntPtr stand = The sibling node of FATHERPTR1 is obtained;
if (Stand! = IntPtr.Zero)
return stand;
Else
return Getupptr ();
}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Search Tree algorithm