二叉搜索树是一种特殊的二叉树,具有以下性质:
1. 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。
2. 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。
3. 它的左右子树也分别为二叉搜索树。
空树也是一颗二叉搜索树。二叉搜索树的中序遍历是有序的。
二叉搜索树的查找:
从根结点开始查找,若节点为空则返回 false;若不为空:1. 若节点大小小于要查找的节点,则从它右子树去找;2. 若节点大小大于要查找的节点,则从它的左子树去找;3. 若节点大小等于要查找的节点大小,则返回true。
二叉搜索树的插入:
如果为空树,则直接插入。若树不为空,则从根结点开始查找合适的位置进行插入:1. 若节点大小小于插入节点,则从右子树开始插入;2. 若节点大小大于插入节点,则从左子树开始插入;3. 若为空节点,则将节点插入该位置。
二叉搜索树的删除:
首先查找是否存在该节点,不存在返回false。如果存在: 1. 若要删除的节点的左子树为空,删除该结点且使被删除节点的双亲结点指向被删除结点的右孩子结点。2. 若要删除的节点右子树为空,删除该节点且使被删除节点的双亲节点指向被删除节点的左孩子节点。3. 若要删除的节点左右子树都不为空,寻找该节点左子树的最大节点或者右子树的最小节点,将寻找到节点的值赋值给要删除的节点的值,然后删除找到的节点,代