• 全部
  • 问答

计算二叉树高度的题目,求助

sdnd2000 2008-04-16 03:53:00
Consider the task of computing the height of a binary tree. ( We define the height of a leaf node to be 0), Suppose each node contains ponters LCHILD(left child) and RCHILD(right child).

a.write a pseudo code
c. Analyze the time complexity of the algorithm in terms of the number of nodes n and the height of the tree h.

我是这样写的
int height( pter r)
{ if r=NULL) return -1
if (height (r->LCHILD)>height(r->RCHILD))
return( 1+height(r->LCHILD))
else return (1+height(r->RCHILD));
}

感觉不是很高效啊,希望高人指点
...全文
357 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sdnd2000 2008-04-17
谢谢,那用n和h表示复杂度该怎么表示呀
回复
sdnd2000 2008-04-17
谢谢,那用n和h表示复杂度该怎么表示呀
回复
rushman 2008-04-16
啊!重复了 -_-!
回复
rushman 2008-04-16
除了没必要多次计算左右子树的高度外,其他没什么要改的
#define MAX(x,y) (x>y?x:y)

int height(pter r){
int lh,rh;
if(r == NULL)return -1;
lh = height(r->LCHILD);
rh = height(r->RCHILD);
return (1 + MAX(lh,rh));
}
回复
sdnd2000 2008-04-16
非常感谢!
回复
tailzhou 2008-04-16
晕,return还调一次;

int height(pter r)
{
int i,j;
if (r==NULL) return -1;
i=height(r->LCHILD);
j=height(r->RCHILD);
return i>j?i+1:j+1;
}

复杂度o(n);
回复
相关推荐
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-04-16 03:53
社区公告
暂无公告