数据结构144-二叉搜索树-搜索特定值是否存在代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>封装二叉搜索树</title> </head> <body> <script> function BinarySearchTree() { function Node(key) { this.key = null; this.left = null; this.right - null; } this.root = null; BinarySearchTree.prototype.insert = function (key) { var newNode = new Node(key); //判断节点是否有值 if (this.root == null) { this.root = newNode; } else { this.insertNode(this.root, newNode); } }; BinarySearchTree.prototype.insertNode = function (node, newNode) { if (newNode.key < node.key) { if (node.left == null) { node.left = newNode; } else { this.insertNode(node.left, newNode); } } else { if (node.right == null) { node.right = newNode; } else { this.insertNode(node.right, newNode); } } }; //先序遍历 BinarySearchTree.prototype.preOrderTraversal = function (handler) { this.preOrderTraversalNode(this.root, handler); }; BinarySearchTree.prototype.preOrderTraversalNode = function ( node, handler ) { if (node != null) { //处理经过的节点 handler(node.key); this.preOrderTraversalNode(node.left, handler); this.preOrderTraversalNode(node.right, handler); } }; //中序遍历 BinarySearchTree.prototype.middleOrderTraversal = function (handler) { this.middleOrderTraversalNode(this.root, handler); }; BinarySearchTree.prototype.middleOrderTraversalNode = function ( node, handler ) { if (node != null) { //处理经过的节点 handler(node.key); this.preOrderTraversalNode(node.left, handler); handler(node.key) this.preOrderTraversalNode(node.right, handler); } }; //中序遍历 BinarySearchTree.prototype.postOrderTraversal = function (handler) { this.postOrderTraversalNode(this.root, handler); }; BinarySearchTree.prototype.postOrderTraversalNode = function ( node, handler ) { if (node != null) { //处理经过的节点 handler(node.key); this.postOrderTraversalNode(node.left, handler); this.postOrderTraversalNode(node.right, handler); handler(node.key) } }; BinarySearchTree.prototype.max = function (){ var node=this.root var key=null while(node!=null){ key=node.key node=node.right } return key } BinarySearchTree.prototype.min = function (){ var node=this.root var key=null while(node!=null){ key=node.key node=node.left } return key } BinarySearchTree.prototype.search = function (){ var node=this.root while(node!=key){ if(key<node.key){ node=node.left }else if(key>node.key){ node=node.key }else{ return true } } return false } } </script> </body> </html>
分类:
前端-数据结构学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!