数据结构139-二叉搜索树-中序遍历代码

简介: 数据结构139-二叉搜索树-中序遍历代码
<!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)
                    this.preOrderTraversalNode(node.right,handler)
                }
            }
        }
    </script>
</body>
</html>
相关文章
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
65 1
|
3月前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
37 1
|
3月前
|
存储 算法 索引
HashMap底层数据结构及其增put删remove查get方法的代码实现原理
HashMap 是基于数组 + 链表 + 红黑树实现的高效键值对存储结构。默认初始容量为16,负载因子为0.75。当存储元素超过容量 * 负载因子时,会进行扩容。HashMap 使用哈希算法计算键的索引位置,通过链表或红黑树解决哈希冲突,确保高效存取。插入、获取和删除操作的时间复杂度接近 O(1)。
32 0
|
3月前
|
存储 算法
数据结构与算法学习十六:树的知识、二叉树、二叉树的遍历(前序、中序、后序、层次)、二叉树的查找(前序、中序、后序、层次)、二叉树的删除
这篇文章主要介绍了树和二叉树的基础知识,包括树的存储方式、二叉树的定义、遍历方法(前序、中序、后序、层次遍历),以及二叉树的查找和删除操作。
35 0
|
3月前
05(数据结构考研)树相关操作代码
05(数据结构考研)树相关操作代码
35 0
|
3月前
|
算法
04(数据结构考研)串相关操作代码
04(数据结构考研)串相关操作代码
21 0
|
2月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
236 9
|
2月前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
37 1
|
2月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
68 5
|
2月前
|
存储 算法 Java
数据结构的栈
栈作为一种简单而高效的数据结构,在计算机科学和软件开发中有着广泛的应用。通过合理地使用栈,可以有效地解决许多与数据存储和操作相关的问题。