首先打开树控件的属性对话框,添加单击事件如下图 *** 作,
,以上 *** 作会自动向工程中添加单击处理函数如下:
void CXXXXXX::OnNMClickTree1(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
CPoint Pos
::GetCursorPos(&Pos) //获取鼠标点击的位置坐标
CPoint pt(Pos)
m_Treectrol.ScreenToClient(&pt) //有屏幕坐标转成 控件坐标(树控件的客户区坐标)
HTREEITEM hSelItem = m_Treectrol.HitTest(pt) //通过HitTest获取单击的子项
CRect rec
m_treeTaskRule.GetItemRect(hSelItem, &rec, TRUE)
if (hSelItem != 0 )//&& rec.PtInRect(pt) //判断是否单击到子项(注释掉的代码为是否点击到子项区域一般是其文字显示区域)
{
m_Treectrol.SelectItem(hSelItem) //选中点击项
// add your code
}
*pResult = 0
}
/*对于用户输入的任意一棵二叉树,仅使用一个指向二叉树T的根的指针,计算(a)
T的节点数量
(b)
T的叶子数量
(c)
T的具有2个孩子的节点的数量
并分别计算其运行时间*/
#include<iostream>
#include<stdio.h>
#include<malloc.h>
int
TWOCHILD
//有两个孩子的结点数
int
LEAF
//叶子数
int
NODE
//结点数
using
namespace
std
typedef
struct
binode{
int
data
struct
binode
*lchild,*rchild
}binode,*bitree
typedef
struct{
bitree
elem[100]
int
top
}stack
bitree
creat_bt(){
//按扩展前序建二叉树
bitree
tint
x
scanf("%d",&x)
if
(x==0)
t=NULL//以0作为结束
else
{
t=(bitree)malloc(sizeof(binode))
t->data=x
printf("请输入%d结点的左孩子结点(若没有,请输入
0)",t->data)
t->lchild=creat_bt()
printf("请输入%d结点的右孩子结点(若没有,请输入
0)",t->data)
t->rchild=creat_bt()
}
return
t
}
int
Twochild(bitree
t)
//先序递归统计有两孩子结点数
{
if(t)
{
if(t->lchild&&t->rchild)
TWOCHILD++
Twochild(t->lchild)
Twochild(t->rchild)
}
return
TWOCHILD
}
int
Leaf(bitree
t)
//先序递归统计叶子结点数
{
if(t)
{
if(!(t->lchild)&&!(t->rchild))
LEAF++
Leaf(t->lchild)
Leaf(t->rchild)
}
return
LEAF
}
int
Node(bitree
t)
//先序递归统计总结点数
{
if(t)
{
NODE++
Node(t->lchild)
Node(t->rchild)
}
return
NODE
}
__inline
unsigned
__int64
GetCycleCount()
//获取时间,纳秒级
{
__asm
_emit
0x0F
__asm
_emit
0x31
}
void
main()
{
TWOCHILD=LEAF=NODE=0
__int64
ls1,le1,ls2,le2,ls3,le3
printf("请输入您要新建的二叉树根结点:")
bitree
root=creat_bt()
ls1=GetCycleCount()
printf("\n该树中具有2个孩子的结点有%d个",Twochild(root))
le1=GetCycleCount()
printf("\n运行时间:%I64d
ns",(le1-ls1))
ls2=GetCycleCount()
printf("\n该树中叶子结点有%d个",Leaf(root))
le2=GetCycleCount()
printf("\n运行时间:%I64d
ns",(le2-ls2))
ls3=GetCycleCount()
printf("\n该树中结点有%d个",Node(root))
le3=GetCycleCount()
printf("\n运行时间:%I64d
ns\n",(le3-ls3))
system("pause")
}运行结果:
路径不对埃你设置一下eclipse里的python解释器。另外检查一下你的wxpython的安装目录。是否在sys.path里。你可以在程序开始测试一下importsysprintsys.path如果wxpython没有在这个目录里,或者是没有在site-packages里就不可以用。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)