求算法:怎样求二叉树的内部路径长度?内部路径长度就是从根结点到每一个结点的长度之和

求算法:怎样求二叉树的内部路径长度?内部路径长度就是从根结点到每一个结点的长度之和
...全文
1083 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
请看西北大学考研试题中的几个算法?
1。已知一棵二叉树采用二叉链表存放,写一算法,要求统计出二叉树中叶子结点个数并输出二叉树中非终端结点(输出无顺序要求)
2、编写算法,判断带头结点的双循环链表L是否对称。
对称是指:设各元素值a1,a2,......,an,则有ai=an-i+1,即指:a1=an,a2=an-1,...,
结点结构如下:prior data next
3、已知(k1,k2,...,kn)是堆,试写一算法,在O(n)时间内将(k1,k2,...,kn,kn+1)调整为堆。
fire314159 2005-08-09
  • 打赏
  • 举报
回复
代码楼上已写出。其实就是遍历二叉树同时用计数器记录而已。
  • 打赏
  • 举报
回复
对不对呀
请给一个比较好的算法
谢谢了
  • 打赏
  • 举报
回复
是不是这样的
int flag=1;
bool travel(BOOT *bt,int flag)
{
if(bt!=NULL)
{
if(bt->left==NULL&&bt->right==NULL)
flag=1;
else
flag=0;
travel(bt,flag);
}
if(flag==1)
return True;
else
return False;
}
fire314159 2005-08-09
  • 打赏
  • 举报
回复
补充再准确点,如果发现有一个节点的两个子树不同时存在或者不同时不存在,flag则为零,断定为非正则二叉树。
fire314159 2005-08-09
  • 打赏
  • 举报
回复
最简单的方法,遍历过程中设一个flag,如果发现有一个节点的两个子树不同时存在,flag则为零,断定为非正则二叉树。
  • 打赏
  • 举报
回复
怎样用一个算法判断一个二叉树是否为正则二叉树
boxban 2005-08-08
  • 打赏
  • 举报
回复

int traversal(Tree* t, int len)
{
int path;

if (t == NULL) return 0;

path = len;
path += traversal(t->left, len + 1);
path += traversal(t->right, len + 1);

return path;
}

usage:
traversal(root, 0);

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧