赞
踩
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
如:
若根节点不为空:
如果根节点==查找key 返回当前节点;
如果根节点 >查找key在其左子树查找;
如果根节点<查找key在其右子树查找;否则就是没有找到,返回null;
class Node{ public int val; public Node left; public Node right; public Node(int val){ this.val = val; } } //二叉搜索树 public class BinarySearchTree { public Node root = null; //查找 public Node search(int key){ Node cur = root; while (cur != null){ if(cur.val == key){ return cur; }else if(cur.val < key){ cur = cur.right; }else{ cur = cur.left; } } return null; }
public boolean insert(int val) { if(root == null) { root = new Node(val); return true; } Node cur = root; Node parent = null; while (cur != null) { if(cur.val < val) { parent = cur; cur = cur.right; }else if(cur.val == val) { return false;//不能有相同的数据 }else { parent = cur; cur = cur.left; } } Node node = new Node(val); if(parent.val < val) { parent.right = node; }else { parent.left = node; } return true; }
设待删除结点为 cur, 待删除结点的双亲结点为 parent;
cur 是 root,则 root = cur.right
cur 不是 root,cur 是 parent.left,则 parent.left = cur.right
cur 不是 root,cur 是 parent.right,则 parent.right = cur.right
cur.right == null
cur 是 root,则 root = cur.left
cur 不是 root,cur 是 parent.left,则 parent.left = cur.left
cur 不是 root,cur 是 parent.right,则 parent.right = cur.left
cur.left != null && cur.right != null
需要使用替换法进行删除:
在cur的左树当中找最大值或者在cur的右树中找最小值
用它的值填补到被删除节点中,再来处理该结点的删除问题。
/** * Created With IntelliJ IDEA * Description: * Users: yyyyy * Date: 2022-02-19 * Time: 16:43 * */ class Node{ public int val; public Node left; public Node right; public Node(int val){ this.val = val; } } //二叉搜索树 public class BinarySearchTree { public Node root = null; //查找 public Node search(int key){ Node cur = root; while (cur != null){ if(cur.val == key){ return cur; }else if(cur.val < key){ cur = cur.right; }else{ cur = cur.left; } } return null; } //插入 public boolean insert(int val) { if(root == null) { root = new Node(val); return true; } Node cur = root; Node parent = null; while (cur != null) { if(cur.val < val) { parent = cur; cur = cur.right; }else if(cur.val == val)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。