什么是二叉树:
一个父节点最多有两个子节点.
什么是二叉搜索树:
创建(插入):
左子节点小于父节点, 右子节点大于等于父节点的二叉树.
举个例子:
对于数组:
83, 53, 20, 47, 75, 7, 5, 4, 65, 99
83为根节点, 53<83, 放在83左边, 20<83<53, 放在53左边, 47<83<53,但47>20, 所以放在20右边. 以此类推.
看图就都明白了:
这也是插入一个数的方法, 只需要比较就够了.
删除
如果我们要删除一个数, 比如53.
从前面的插入过程中, 我们知道,左子节点上的数总是小于父节点, 父节点又总是小于等于右子节点, 所以也就是这么个关系:
左子节点<父节点<=右子节点.
删除最末端的左子节点和右子节点对树的结构都是没有影响的, 但是如果删除父节点, 也就是带有子树的节点, 对整个树的结构就有影响了.
父节点只有一个子节点也比较简单, 直接删除后,子节点补位就可以了.
但如果有两个子树, 就会稍微复杂一点点. 让我们看上一个图, 其实删除53以后,用47和65来补位都可以, 但是由于右边是包含等于的情况的, 所以用65. 举个例子吧.
如果47后面还有个47,把47补过去以后, 就还要个47在补位的47的左侧, 这违反了规则.