二叉搜索树

二叉搜索树:一种二叉树,对于每个节点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为树的高度。

posted on 2016-02-24 11:30  GioGio  阅读(154)  评论(0)    收藏  举报

导航