思路
之前一直觉得二叉查找树写起来比较麻烦,主要是添加删除元素比较复杂抽象,这次写了一下其实还好。删除某个元素,只需要把右子树中最小节点和待删除元素交换,并删除最后那个字节点。(右子树最小节点刚好比左子树所有节点大,比右子树所有节点小,故符合要求)。这么一思考,代码挺简单的。
Code
public class BST {
TreeNode root;
TreeNode makeEmpty(TreeNode t) {
if (t == null) return null;
makeEmpty(t.left);
makeEmpty(t.right);
t = null;
return null;
}
TreeNode insert(TreeNode t, int val) {
if (t == null) {
t = new TreeNode(val);
} else if (val < t.val<