Java怎么实现搜索算法二叉搜索树
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本文小编为大家详细介绍"Java怎么实现搜索算法二叉搜索树",内容详细,步骤清晰,细节处理妥当,希望这篇"Java怎么实现搜索算法二叉搜索树"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2025年02月01日Java怎么实现搜索算法二叉搜索树
本文小编为大家详细介绍"Java怎么实现搜索算法二叉搜索树",内容详细,步骤清晰,细节处理妥当,希望这篇"Java怎么实现搜索算法二叉搜索树"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、二叉搜索树插入元素
/** * user:ypc; * date:2021-05-18; * time: 15:09; */ class Node { int val; Node left; Node right; Node(int val) { this.val = val; } } public void insert(int key) { Node node = new Node(key); if (this.root == null) { root = node; } Node cur = root; Node parent = null; while (cur != null) { if (cur.val == key) { //System.out.println("元素已经存在"); return; } else if (cur.val > key) { parent = cur; cur = cur.left; } else { parent = cur; cur = cur.right; } } if (key > parent.val) { parent.right = node; } else { parent.left = node; } }
二、搜索指定节点
public boolean search(int key) { Node cur = root; while (cur != null) { if (cur.val == key) { return true; } else if (cur.val > key) { cur = cur.left; } else { cur = cur.right; } } return false; }
三、删除节点方式一
public void removenode1(Node parent, Node cur) { if (cur.left == null) { if (cur == root) { root = cur.right; } else if (cur == parent.right) { parent.left = cur.right; } else { parent.right = cur.right; } } else if (cur.right == null) { if (cur == root) { root.left = cur; } else if (cur == parent.right) { parent.right = cur.left; } else { parent.left = cur.left; } } else { Node tp = cur; Node t = cur.right; while (t.left != null) { tp = t; t = t.left; } if (tp.left == t) { cur.val = t.val; tp.left = t.right; } if (tp.right == t) { cur.val = t.val; tp.right = t.right; } } } public void remove(int key) { Node cur = root; Node parent = null; while (cur != null) { if (cur.val == key) { removenode1(parent, cur); //removenode2(parent, cur); return; } else if (key > cur.val) { parent = cur; cur = cur.right; } else { parent = cur; cur = cur.left; } } }
四、删除节点方式二
public void removenode2(Node parent, Node cur) { if (cur.left == null) { if (cur == root) { root = cur.right; } else if (cur == parent.right) { parent.left = cur.right; } else { parent.right = cur.right; } } else if (cur.right == null) { if (cur == root) { root.left = cur; } else if (cur == parent.right) { parent.right = cur.left; } else { parent.left = cur.left; } } else { Node tp = cur; Node t = cur.left; while (t.right != null) { tp = t; t = t.right; } if (tp.right == t) { cur.val = t.val; tp.right = t.left; } if (tp.left == t) { cur.val = t.val; tp.left = t.left; } } }
五、运行结果
/** * user:ypc; * date:2021-05-18; * time: 15:09; */class TestBinarySearchTree { public static void main(String[] args) { int a[] = {5, 3, 4, 1, 7, 8, 2, 6, 0, 9}; BinarySearchTree binarySearchTree = new BinarySearchTree(); for (int i = 0; i < a.length; i++) { binarySearchTree.insert(a[i]); } binarySearchTree.inOrderTree(binarySearchTree.root); System.out.println(); binarySearchTree.preOrderTree(binarySearchTree.root); binarySearchTree.remove(7); System.out.println(); System.out.println("方法一删除后"); binarySearchTree.inOrderTree(binarySearchTree.root); System.out.println(); binarySearchTree.preOrderTree(binarySearchTree.root); }}
读到这里,这篇"Java怎么实现搜索算法二叉搜索树"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
搜索
算法
文章
节点
元素
内容
方式
妥当
思路
新知
方法
更多
步骤
知识
知识点
篇文章
细节
结果
行业
资讯
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全课挂科
甘肃省信息基础设施网络安全检查
jsp将图存储到数据库
手机淘宝服务器出错
公安局检查网络安全
命令查看数据库编码格式
明日之后前哨站服务器主播营地
优优互联网科技公司官网
华为自动驾驶软件开发公司怎么样
新华网 网络安全法
ipcamera软件开发
深圳市星月网络技术有限公司
数据库安装知识
水晶报表数据库
集团数据库管理主管职责
宁德存储服务器
浙江九妖网络技术有限公司
网络安全遵循
网络安全教育观后感1000
网络安全法规考试题库
贵州云服务器有多大云空间
如何做好数据库销售
周鸿祎中国网络安全漏洞
数据库技术基础试卷
学校网络安全教学视频
混沌起源各个版本的服务器
网络安全宣传教育政府
武汉市网络安全大会
上海北隽互联网科技
如何加强防范网络安全问题