(CTreeCtrl )高分求树的遍历算法(2)!!!!!!!!!!!!!!!! 哇,你分多得用不完吗?这和http://www.csdn.net/Expert/topic/488/488610.shtm有什么区别,又开300分。你今天至少开了900多分了吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void CTreeView::OnDraw(CDC* pDC){ CRect rc; GetClientRect(rc); pDC->SetMapMode(MM_LOENGLISH); DrawTree(pDC, rc.right/2, -rc.bottom, (double)rc.bottom*0.2, 1.57, 10);}int CTreeView::DrawTree(CDC *pDC, int xStart, int yStart, double length, double angle, int num){ int xEnd, yEnd; if(num == 0) return 1; xEnd = xStart + (int)(length*cos(angle)); yEnd = yStart + (int)(length*sin(angle)); pDC->MoveTo(xStart, yStart); pDC->LineTo(xEnd, yEnd); DrawTree(pDC, xEnd, yEnd, length * 0.6, angle + 0.624, num - 1); DrawTree(pDC, xEnd, yEnd, length * 0.85, angle + 0.08, num - 1); DrawTree(pDC, xEnd, yEnd, length * 0.65, angle - 0.60, num - 1); return 1;} to:chenzhou35(chenzhou35)包括父节点的亲兄弟节点。我的意思是当我选择一棵树的任意节点时,从这个节点起,1。遍历它的所有的孩子节点,2。遍历它的所有的父辈节点(包括父节点的亲兄弟节点,不包括非亲兄弟) 遍历孩子节点的算法你已经知道,现在给出兄弟节点和父节点的算法。同样没调试,直接在这里写的,你试试吧。fun(HTREEITEM hItem){ HTREEITEM hParenItem,hSiblingItem; hParentItem = GetParentItem(hItem); //获取父节点 if(!hParent) //已经到达根节点。 return ; hSiblingItem = GetChildItem(hParentItem); //获取第一个兄弟节点 while(hSiblingItem) { hSiblingItem = GetNextSiblingItem(hSiblingItem); //获取所有的其他兄弟节点,包括指定节点 } fun(hParenItem); //遍历父节点及其兄弟节点} 判断文件夹代码的疑问? 图形学矩阵变换的问题 千金散去还复来,最后的133。散掉100 请问:在哪里可以找到Imapi.h文件? 类似xp中计算器的界面是怎么创建的? Debug下没有错误,但是Release版本却出现连接错误! 为什么我在SDK Platform中找不到SubClassWindow?? 用vc开发dll时遇到的对话框问题,求助! 我怎么才能看到DLL里都有哪些导出函数啊? 一个奇怪的问题! (CTreeCtrl )高分求树的遍历算法(2)!!!!!!!!!! 如何实现给2013QQ版本发送消息
{
CRect rc;
GetClientRect(rc);
pDC->SetMapMode(MM_LOENGLISH);
DrawTree(pDC, rc.right/2, -rc.bottom, (double)rc.bottom*0.2, 1.57, 10);
}int CTreeView::DrawTree(CDC *pDC, int xStart, int yStart, double length, double angle, int num)
{
int xEnd, yEnd;
if(num == 0)
return 1; xEnd = xStart + (int)(length*cos(angle));
yEnd = yStart + (int)(length*sin(angle)); pDC->MoveTo(xStart, yStart);
pDC->LineTo(xEnd, yEnd); DrawTree(pDC, xEnd, yEnd, length * 0.6, angle + 0.624, num - 1);
DrawTree(pDC, xEnd, yEnd, length * 0.85, angle + 0.08, num - 1);
DrawTree(pDC, xEnd, yEnd, length * 0.65, angle - 0.60, num - 1);
return 1;
}
任意节点时,从这个节点起,
1。遍历它的所有的孩子节点,
2。遍历它的所有的父辈节点(包括父节点的亲兄弟节点,不包括非亲兄弟)
{
HTREEITEM hParenItem,hSiblingItem;
hParentItem = GetParentItem(hItem); //获取父节点
if(!hParent) //已经到达根节点。
return ;
hSiblingItem = GetChildItem(hParentItem); //获取第一个兄弟节点
while(hSiblingItem)
{
hSiblingItem = GetNextSiblingItem(hSiblingItem); //获取所有的其他兄弟节点,包括指定节点
}
fun(hParenItem); //遍历父节点及其兄弟节点
}