2012/4/9----二叉查找树(二叉排序树)的各种操作
不知不觉都快5天没更新内容了,倒不是自己坚持不下来。一方面是因为二叉树这一块难度也比开始增大了,所以学习进度也就相对来说慢了一点。但更重要的是在学算法的同时也还有其他东西需要学习,在算法上面不能花太多时间。
今天写的是和二叉查找树相关的java代码,包括了二叉查找树的创建,中序遍历,查询(分为递归和非递归两种),查找最小节点,查找最大节点,插入节点,删除节点,查找节点的前驱,查找节点的后继,查找节点的父亲节点。差不多有10种操作吧。
在贴代码之前,先介绍一下什么是二叉查找树(来自百度百科):
二叉排序树(Binary Sort Tree)又称二叉查找树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;
至于具体的操作我就不说了,在我代码里面都有详细的注释说明,运行结果我也会贴出来。
ps:代码比较多,如果发现问题还望留言指正。
?
打印出数组A中的元素23,12,43,2,87,54,中序遍历构造的二叉查找树:2,12,23,43,54,87,递归算法--查找节点域:23左孩子:12右孩子:查找节点域:43非递归算法--查找节点域:23左孩子:12右孩子:查找节点域:43最小节点:2最大节点:87插入l节点(l的data为17)之后的二叉查找树的中序遍历结果:2,12,17,23,43,54,87,q的父亲节点(q的data为12):23左孩子:12右孩子:查找节点域:43删除l节点(l的data为17)之后的二叉查找树的中序遍历结果:2,12,23,43,54,87,K的后继节点(k的data为23):43K的前驱节点(k的data为23):12