不行了我,谁帮我写一个遍历树的程序呀 遍历一个CTreeCtrl所有节点的程序,谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //遍歷樹所有節點HTREEITEM hitem=NULL;CString str;hitem=tvDept.GetRootItem ( ); //取得根節點while(hitem){ //str=tvDept.GetItemText (hitem); AfxMessageBox (str); Traversal(hitem); hitem=tvDept.GetNextSiblingItem (hitem); //取得指定節點hitem的下一個兄弟節點} void Traversal(HTREEITEM hitem) //函數Traversal( )采用遞歸方法遍歷指定節點hitem的所有子節點{ HTREEITEM hnext; CString str; hnext=tvDept.GetChildItem(hitem); //取得指定節點hitem的子節點 while(hnext){ //str=tvDept.GetItemText (hnext); AfxMessageBox (str); 此句用來調試顯示用 Traversal(hnext); hnext=tvDept.GetNextSiblingItem (hnext); //GetPrevSiblingItem( )取兄弟節點的上一節點 }} 楼上的兄弟,递归我是写晕了。 :-P能不能给我一个直接一个递归函数遍历CTreeCtrl中所有树林的所有节点的代码? You can find tree travel programmers in the network too! 中序遍历tree,链表存储。travertree(Bitree *p){ while (p) travertree(p->lchild); printf("%c",p.data); travertree(p->rchild);} 你可以借鉴以下的程序段: //遍历树,Have checked in SearchChannelsArray。 CStringArray SearchChannelsArray; HTREEITEM HhootItem; HhootItem=m_Tree_Channels.GetRootItem(); BOOL bIsCheck = m_Tree_Channels.GetCheck(HhootItem); if(bIsCheck) { //get first tree HTREEITEM HItem; HItem=m_Tree_Channels.GetNextItem(HhootItem,TVGN_CHILD); while(HItem!=NULL) { if(m_Tree_Channels.GetCheck(HItem)) { CString str=m_Tree_Channels.GetItemText(HItem); str=str.Right(str.GetLength()-str.Find(":")-1); str=(CString)ComputerName+_T("\\Camera")+str; SearchChannelsArray.Add(str); } HItem=m_Tree_Channels.GetNextItem(HItem,TVGN_NEXT); } GDI+程序用内存持续增加? 用source如何写使spin control与edit control绑定? CRichEditCtrl滚动条的问题~~~ 史上最强输入法 为什么创建分割窗体时创建的ListView在InsertColumn时没有成功! 如何让一个对话框一显示就最大化? 如何在2000下隐藏进程 [求助]我对VC++6.0这个地方比较迷糊! 请教关于文件传输问题? 关于 在工作线程中使用DAO 各位GG,JJ都是武林高手了, 来关心一下小M M 吧。。。感情咋就这么折腾人呢? 蔡问题,100分,在线等候!急!
HTREEITEM hitem=NULL;
CString str;
hitem=tvDept.GetRootItem ( ); //取得根節點
while(hitem){
//str=tvDept.GetItemText (hitem); AfxMessageBox (str);
Traversal(hitem);
hitem=tvDept.GetNextSiblingItem (hitem); //取得指定節點hitem的下一個兄弟節點
} void Traversal(HTREEITEM hitem) //函數Traversal( )采用遞歸方法遍歷指定節點hitem的所有子節點
{
HTREEITEM hnext;
CString str;
hnext=tvDept.GetChildItem(hitem); //取得指定節點hitem的子節點
while(hnext){
//str=tvDept.GetItemText (hnext); AfxMessageBox (str); 此句用來調試顯示用
Traversal(hnext);
hnext=tvDept.GetNextSiblingItem (hnext); //GetPrevSiblingItem( )取兄弟節點的上一節點
}
}
{
while (p)
travertree(p->lchild);
printf("%c",p.data);
travertree(p->rchild);}
//遍历树,Have checked in SearchChannelsArray。
CStringArray SearchChannelsArray;
HTREEITEM HhootItem;
HhootItem=m_Tree_Channels.GetRootItem();
BOOL bIsCheck = m_Tree_Channels.GetCheck(HhootItem);
if(bIsCheck)
{ //get first tree
HTREEITEM HItem;
HItem=m_Tree_Channels.GetNextItem(HhootItem,TVGN_CHILD);
while(HItem!=NULL)
{
if(m_Tree_Channels.GetCheck(HItem))
{
CString str=m_Tree_Channels.GetItemText(HItem);
str=str.Right(str.GetLength()-str.Find(":")-1);
str=(CString)ComputerName+_T("\\Camera")+str;
SearchChannelsArray.Add(str);
}
HItem=m_Tree_Channels.GetNextItem(HItem,TVGN_NEXT);
}