利用队列和栈实现树型结构历遍

时间:2021-10-13 12:57:39

 

利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍 /// <summary>
利用队列和栈实现树型结构历遍        
/// 广度优先
利用队列和栈实现树型结构历遍        
/// </summary>
利用队列和栈实现树型结构历遍        
/// <param name="control"></param>

利用队列和栈实现树型结构历遍         private   void  FindSelecedControl1(Control control)  
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍        
{  
利用队列和栈实现树型结构历遍            Queue   que 
= new Queue(); 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍            Control ctlCurrent; 
利用队列和栈实现树型结构历遍            que.Enqueue(control); 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍            
while(que.Count != 0
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍            

利用队列和栈实现树型结构历遍                ctlCurrent 
= (Control)que.Dequeue(); // 最先加入队列的节点出列 
利用队列和栈实现树型结构历遍

利用队列和栈实现树型结构历遍                
if(true)  // 访问之 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍
                
利用队列和栈实现树型结构历遍                    
if(ctlCurrent.ID != null)
利用队列和栈实现树型结构历遍                        aList.Add(ctlCurrent.ID); 
利用队列和栈实现树型结构历遍                }
 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍                
for(int i = 0; i < ctlCurrent.Controls.Count; i++)  // 把ctlCurrent的子节点入列 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍
                
利用队列和栈实现树型结构历遍                    que.Enqueue(ctlCurrent.Controls[i]); 
利用队列和栈实现树型结构历遍                }
 
利用队列和栈实现树型结构历遍            }
 
利用队列和栈实现树型结构历遍        }
 


 

利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍 /// <summary>
利用队列和栈实现树型结构历遍        
/// 深度优先
利用队列和栈实现树型结构历遍        
/// 
利用队列和栈实现树型结构历遍        
/// </summary>
利用队列和栈实现树型结构历遍        
/// <param name="control"></param>

利用队列和栈实现树型结构历遍         private   void  FindSelecedControl(Control control) 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍        

利用队列和栈实现树型结构历遍            Stack   stk 
= new Stack(); 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍            Control ctlCurrent 
= control; // 当前访问的控件 
利用队列和栈实现树型结构历遍
            Control ctlParent = null;  // 父控件 
利用队列和栈实现树型结构历遍
            int     index = 0// 当前控件是父控件的第i个子控件 
利用队列和栈实现树型结构历遍

利用队列和栈实现树型结构历遍            
do 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍            

利用队列和栈实现树型结构历遍                
if(true// 判断当前控件(ctrCurrent)是不是要找的 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍
                
利用队列和栈实现树型结构历遍                    
if(ctlCurrent.ID != null)
利用队列和栈实现树型结构历遍                        aList.Add(ctlCurrent.ID); 
利用队列和栈实现树型结构历遍                }
 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍                
if(ctlCurrent.Controls.Count != 0// 访问完当前控件,优先访问子控件 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍
                
利用队列和栈实现树型结构历遍                    stk.Push(index); 
//发现子,current = parent.controls[index].将index推入棧
利用队列和栈实现树型结构历遍
                    index = 0
利用队列和栈实现树型结构历遍                    ctlParent 
= ctlCurrent; 
利用队列和栈实现树型结构历遍                    ctlCurrent 
= ctlCurrent.Controls[0]; 
利用队列和栈实现树型结构历遍                }
 
利用队列和栈实现树型结构历遍                
else if(ctlParent != null && index + 1 < ctlParent.Controls.Count)  // 存在下一个兄弟控件 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍
                
利用队列和栈实现树型结构历遍                    ctlCurrent 
= ctlParent.Controls[++index]; 
利用队列和栈实现树型结构历遍                }
 
利用队列和栈实现树型结构历遍                
else  // 没有子控件和下一个兄弟控件 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍
                
利用队列和栈实现树型结构历遍                    
while(true
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍                    

利用队列和栈实现树型结构历遍                        
if(ctlParent == null || ctlParent.Equals(control)) 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍                        

利用队列和栈实现树型结构历遍                            ctlCurrent 
= control; 
利用队列和栈实现树型结构历遍                            
break
利用队列和栈实现树型结构历遍                        }
 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍                        ctlCurrent 
= ctlParent; 
利用队列和栈实现树型结构历遍                        ctlParent 
= ctlCurrent.Parent; 
利用队列和栈实现树型结构历遍                        index 
= (int)stk.Pop(); 
利用队列和栈实现树型结构历遍
利用队列和栈实现树型结构历遍                        
if(ctlParent != null && index + 1 < ctlParent.Controls.Count) 
利用队列和栈实现树型结构历遍利用队列和栈实现树型结构历遍                        

利用队列和栈实现树型结构历遍                            ctlCurrent 
= ctlParent.Controls[++index]; 
利用队列和栈实现树型结构历遍                            
break
利用队列和栈实现树型结构历遍                        }
 
利用队列和栈实现树型结构历遍                    }
 
利用队列和栈实现树型结构历遍                }
 
利用队列和栈实现树型结构历遍            }
while(!ctlCurrent.Equals(control)); 
利用队列和栈实现树型结构历遍        }
 

利用队列和栈实现树型结构历遍