您的位置:首页 > 理论基础 > 数据结构算法

数据结构....排序+查找

2007-05-11 00:52 281 查看
今天后来在看查找的部分..   清华那本C语言描述的书...

看到二叉树部分...   二叉树中求平均长度的那个等式楞了挺久还是没得出来...

p(n)=(1-1/(n^2))p(n-1) + 2/n - 1/(n^2);

p(n) = 2(1+1/n)(1/2+1/3+...+1/(n+1)) - 1;  到这步的推导还没反应出来...  留着明天想了就`~

看求二叉排序数中的求后继算法的时候....  突然发现..  自己的思想确实是有点问题... 

不够top-down???   也许...

看到求后继的时候直接反应是其在树上的位置该是如何...   而实际上这是个数学关系..

 二叉排序数按中序遍历得到的就是一个顺序的序列...  从这个角度出发很自然的能发现其后继该是在树上的哪个位置.. [或者说...  从图中.. 该反应到这个想法才行..]   这样可以得到很清晰的编程思路....   [似乎自己做类似题目的时候..   还没学会用数学的角度来看待程序...  对这样类似的程序反应总是偏慢??? 至少尝试过的acm题目...  都不晓得真正的算法从哪里下手...   联想到那个数学模型去...  /lh...] 

正在看算法...  学习ing ......   [希望尽快让自己对程序有个好的数学觉悟...   ]  

 二叉排序数的删除操作 // 来自 算法导论...  remarked

Binary_search
1.  2 compare per loop
2.  1 compare per loop

if left[z] == null or right[z] == null
 then y = z
 else y = tree-successor(z)
if left[y] != null  // this time jugde whether only one child
 then x = left[y]  //parent of y
 else x = right[y]
if x != null  //  if z have no child
 then p[x] = p[y]  //x are left[y] or right[y]
if p[y] = null
 then root[T] = x // T mean tree
 else if y = left[p[y]]
  then left[p[y]] = x
  else right[p[y]] = x
if y != z   // i'm not sure why this statement need if - -!
 then key[z] = key [y]
return y

P.S:  那个team似乎现在放假也可以回老家了...   能陪丫头去旅游了就... 还是有点懒散啊...    今天下午上课的时候其实很压力...  机房的机子又让人郁闷...   结果就光坐着...  耗掉了中午的时间...  然后赶紧逃了回来...   郁闷无比...  team里面估计就数我最最菜了...    要努力....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息