二叉搜索树
实现二叉搜索树插入、删除(清空)、查找,清空方法虽然个人觉得很不好,但水平有限暂时只能到这个程度。
属性:
每个节点的值比它的左子树的所有节点的值都大,比它右子树的所有节点值都小。
插入:
如果树为空:
把新值作为根节点插入
否则:
如果新值小于当前节点的值:
把新值插入数的左子树
否则:
把新值插入数的右子树
删除:
1,删除没有孩子节点的,直接删除。
2,删除只有一个孩子节点,必须让其孩子节点为其父节点连接。
3,删除有二个孩子节点,其实删除它的左子树中值最大的那个节点,用这个值代替原先应被删除那个节点值。
清空数的方法,一直删除根节点,直至树为空。
查找:
如果树为空:
这个值不存在树中
否则:
如果这个值与跟节点值相等
成功找到位置
否则
如果这个值小于根节点值
查找左子树
否则
查找右子树