c# - Algorithm to iterate TreeView nodes in reverese from the last leaf to root -


what best algorithm iterate winforms treeview control last leafs roots in reverse? c#

the code below visit each node , traverse completely, depth-first, until comes leaf. then, unwinds stack, call dosomethingwithnode each node. depth parameter there show nodes returned in reverse order.

void reversetraverse(treenodecollection nodes, int depth) {     if (nodes == null) return;     foreach (treenode child in nodes)     {         reversetraverse(child.nodes, depth+1);         dosomethingwithnode(child, depth);     } } 

to call it, assuming mytreeview treeview instance:

reversetraverse(mytreeview.nodes, 1); 

note doesn't give deepest leaf nodes first, rather makes sure leaf node output before parent node. if tree looks this:

node 1   node 1.1   node 1.2     node 1.2.1 node 2   node 2.1     node 2.1.1       node 2.1.1.1     node 2.1.2 

the output order be:

node 1.1 node 1.2.1 node 1.2 node 1 node 2.1.1.1 node 2.1.1 node 2.1.2 node 2.1 node 2 

if want deepest nodes first (i.e. node 2.1.1.1 output first), you'd have make full traversal (in forward order easiest) , build list of nodes corresponding depths. sort list depth (descending) , output in order.


Comments

Popular posts from this blog

python - Scipy curvefit RuntimeError:Optimal parameters not found: Number of calls to function has reached maxfev = 1000 -

c# - How to add a new treeview at the selected node? -

java - netbeans "Please wait - classpath scanning in progress..." -