二叉查找树算法伪代码
(2009-03-24 12:50:08)
标签:
it |
来源于《算法导论》第二版
1. 中序遍历
inorder-tree-walker(x)
{
}
如果不用递归方法,可以用栈作为辅助数据结构
2.前序遍历
preorder-tree-walker(x)
{
}
3.后序遍历
preorder-tree-walker(x)
{
}
4.查找算法
递归方法
tree-search(x, key)
{
}
循环方法
iterative-tree-search(x, key)
{
}
5. 最小节点
tree-minimum(x)
{
}
6.最大节点
tree-maximum(x)
{
}
7.某一节点的后继
tree-successor(x)
{
}
8.某一节点的前趋
predecessor(x)
{
}
9.插入
tree-insert(T, z)
{
}
10. 删除
tree-delete(T, z)
{
}
删除的算法基于几点值得商榷:
1.最后key[z] = key[y]这句至少应该是要交换,因为return y之后,外面可能还要用节点z里的数据
2.如果用c++实现,数据放的是很大object,copy效率低
3.这个伪代码有点难以理解
所以我觉得还是应该居于修改节点的指针来写代码比较好。
其他的几个算法都很好理解,其中遍历算法不能用递归方法的话,可能也比较难一点