Chinaunix首页 | 论坛 | 博客
  • 博客访问: 607084
  • 博文数量: 172
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1252
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-29 22:26
文章分类

全部博文(172)

文章存档

2011年(6)

2010年(7)

2009年(159)

我的朋友

分类: LINUX

2009-11-12 18:24:51

问题描述:
构造二叉树,使其每个内节点中的数据项是其两个子节点中较大的。

实现方法:

typedef struct node *link;
struct node { Item item; link l, r };

link NEW(Item item, link l, link r)
{
  link x = malloc(sizeof *x);
  x->item = item; x->l = l; x->r = r;
  return x;
}


link max(Item a[], int l, int r)
{
  int m = (l+r)/2; Item u, v;
  link x = NEW(a[m], NULL, NULL);


  if (l == r) return x;

  x->l = max(a, l, m);
  x->r = max(a, m+1, r);

  u = x->l->item; v = x->r->item;

  if (u > v)
    x->item = u; else x->item = v;
  return x;
}


阅读(2384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~