2014年4月18日

《算法导论》笔记 第12章 12.3 插入和删除

摘要: 【笔记】插入:从根结点开始,沿树下降。指针x跟踪这条路径,而y始终指向x的父结点。根据key[z]与key[x]的比较结果,决定向左向右转。直到x成为NIL为止。这个NIL所占位置及我们想插入z的地方,y即为z的父结点。删除:以指向z的指针为参数,考虑三种情况。若z没有子女,则修改其父结点p[z],是NIL为其子女;如果结点z只有一个子女,则可以通过在其子结点与父结点之间建立一条链来删除z。如果结点z有两个子女,先删除z的后继y(它没有左子女),再用y的内容来替代z的内容。 void treeInsert(NODE *z) { NODE *y = NULL; ... 阅读全文

posted @ 2014-04-18 19:51 电子幼体 阅读(1058) 评论(0) 推荐(0) 编辑

《算法导论》笔记 第12章 12.2 查询二叉查找树

摘要: 【笔记】对一棵高度为h的二叉查找树,动态集合操作SEARCH、MINIMUM、MAXIMUM、SUCCESSOR和PREDECESSOR等的运行时间均为O(h)。 NODE* treeSearch(NODE *rt,T k) { if (rt==NULL || k==rt->key) return rt; if (kkey) return treeSearch(rt->l,k); else return treeSearch(rt->r,k); } NODE* iterativeTreeSearch(NODE *rt,T k) { ... 阅读全文

posted @ 2014-04-18 12:06 电子幼体 阅读(553) 评论(0) 推荐(0) 编辑

导航