quickest way is a
TreeNode recursiveFind(TreeNode Node, obj yourCritera){
TreeNode HoldTN = null;
foreach(TreeNode tn in Node.Children)
{
if([YOUR SEARCH CRITERA]){
return tn;
}
else{
HoldT = recursive(tn);
if(HoldTN!=null){return HoldTN;}
}
}
return null;
}
As For Highlighting, I believe you can set this using the Node Background...
The above will work, however navigating the nodes will become sluggish when you start getting a LARGE number of nodes with children(as opposed to a low number of Branchings to a high number of nodes)
may want to consider an addressing approach:
for a tree that is
a{b{d,e}c{f,g}}
f would have the address 0.1.0; this works very well when you want to do more complicated navigational tricks, and also simplifies the code when you want to get a node:
GetNode(NodeAddress Address){}