Chinaunix首页 | 论坛 | 博客
  • 博客访问: 986806
  • 博文数量: 150
  • 博客积分: 3017
  • 博客等级: 少校
  • 技术积分: 3829
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 14:40
个人简介

Now in Baidu WISE team

文章分类

全部博文(150)

文章存档

2014年(8)

2013年(31)

2012年(111)

分类: C/C++

2012-12-05 23:09:00

12.2-4
Bunyan教授认为他发现了二叉搜索树的一个重要性质。假设在二叉搜索树中,对某关键字k的查找在一个叶结点处结束,考虑三个集合:A,包含查找路径左边的关键字;B,包含查找路径上的关键字;C,包含查找路径右边的关键字一个叶结点处结束,考虑三个集合:A,包含查找路径左边的关键字;B,包含查找路径上的关键字;C,包含查找路径右边的关键字。Bunyan教授宣称,任何三个关键字a∈A,b∈B,c∈C,必定满足a≤b≤c。请给出该命题的一个最小可能的反例.
证明:
集合A,B,C的最大值分别为Amax,Bmax,Cmax
显然,Bmax的值即树的根节点。
对于二叉搜索树,一个节点x的左子树中任意节点left,有left<=x,右子树中任意节点right,有right>=x
所以,只需要保证Cmax在根节点左子树即可
      Bmax
      /\      
        b2
       / \
       k  Cmax
 
12.2-5
如果二叉查找树中的某个结点有两个子女,则其后继没有左子女,其前趋没有右子女。
证明:
后继部分:
假设node有两个子女,其后继为x,则x必定位于node的右子树中。若x有左子女left,则有x>left,且left>node。即x>left>node。
根据二叉树的性质,node的后继节点必定为比node大且值最接近的结点,即x-node< x-left 即 left所以有:
  对于一个结点x,如果其右子树为空,则x的后继结点为右子树中最左的结点。
同理可证前趋部分。
阅读(2780) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~