二叉搜索树:一种二叉树,对于每个节点x,其左子树中的每个节点的关键字小于等于x的关键字,右子树的关键字大于等于x的关键字。
中序遍历:先对每个节点,先输出左子树,输出该节点,再输出右子树
查找:将给定关键字与根节点比较,如果小于则在左子树上查找,否则在右子树查找,等于则查找成功
最大值:树最右的节点
最小值:最左的节点
后继(大于给定节点的最小节点):如果要查找的节点有右孩子,则找其右子树的最小一个。如果没有,向上搜索,直到找到一个该子树是其左孩子的节点
前驱(小于给定节点的最大节点):与后继方法对称。
插入:根据要插入的数z与根节点关键字比较大小,找到一个节点,如果其关键字小于z且右孩子为空,或者大于z且左孩子为空,将z插入该节点的相应孩子节点。注:插入的数一定是放在叶子节点
删除:将节点z从树T中删除,分为三种情况,一、如果z的左孩子为空,则用z的右孩子代替z;二、如果z的右孩子为空,则用z的左孩子代替z;三、在z的右子树上搜索最小值y,y左孩子为空,用y代替z,y由其右孩子代替。
随机构建二叉搜索树:一棵有n个不同关键字的随机构建二叉搜索树的期望高度为O(lgn)
查找,最小值,最大值,后继,前驱,插入,删除的时间复杂度都为O(h),h为树的高度。
原文:http://www.cnblogs.com/Jolyne/p/5212266.html