Add, Search, Delete Node in BST.

2024-09-04 15:32
文章标签 node search add delete bst

本文主要是介绍Add, Search, Delete Node in BST.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Add Node, Search Node, Delete Node, 的基本操作,被问了两次了。写出来。

http://quiz.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/

 

	// add the node;public TreeNode addNode(TreeNode root, int val) {if(root == null){root = new TreeNode(val);return root;}if(root.val == val) {return root;} else if(root.val > val) {root.left = addNode(root.left, val);} else { // root.val < val;root.right = addNode(root.right, val);}return root;}// search the node;public TreeNode searchNode(TreeNode root, int val) {if(root == null || root.val == val) {return root;}if(val < root.val){return searchNode(root.left, val);} else {return searchNode(root.right, val);}}

 

 

 

http://quiz.geeksforgeeks.org/binary-search-tree-set-2-delete/

delete node分三类,如上,左右两边都有的,那么就找最右边的最小的,copy到root,然后delete那个node;

 

// delete node; public TreeNode deleteNode(TreeNode root, int val) {if(root == null) return root;if(val < root.val){root.left = deleteNode(root.left, val);} else if(val > root.val) {root.right = deleteNode(root.right, val);} else { // root.val == val, find the treenode that needs to be deleted;if(root.left == null) {return root.right;} else if(root.right == null) {return root.left;} else { // root has left & right node;root.val = findInorderNextNode(root.right);root.right = deleteNode(root.right, root.val);}}return root;}

 

 

 

 

 

 

这篇关于Add, Search, Delete Node in BST.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136350

相关文章

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

在Dockerfile中copy和add的区别及说明

《在Dockerfile中copy和add的区别及说明》COPY和ADD都是Dockerfile中用于文件复制的命令,但COPY仅用于本地文件或目录的复制,不支持自动解压缩;而ADD除了复制本地文件或... 目录在dockerfile中,copy 和 add有什么区别?COPY 命令ADD 命令总结在Doc