zoukankan      html  css  js  c++  java
  • 11.二叉搜索树的创建和查找(JavaScript版)

    创建一个二叉搜索树,并且从创建的二叉搜索树中查找是否存在某个值

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script>
            function Node(value){
                this.value = value;
                this.left = null;
                this.right = null;
            }
            //二叉搜索树:是一棵二叉树,左子树的节点值都比当前节点值小,右子树的节点值都比当前节点值大。
            function buildSearchTree(arr){
                if(arr == null || arr.length == 0) return null;
                var root = new Node(arr[0]);//把数组第一个数当做根节点
                for(var i = 0; i < arr.length; i++){//循环数组,创建二叉搜索树
                    addNode(root, arr[i]);
                }
    
                return root;
            }
    
            //添加节点
            function addNode(root, value){
                if(root == null) return null;//root为null,直接返回
                if(root.value == value) return null;//值相等,说明已有该节点
                if(root.value > value){//小于,则往左子树上添加
                    if(root.left == null){//左节点没值,添加节点
                        root.left = new Node(value);
                    }else{
                        addNode(root.left, value);
                    }
                }else{//大于,往右子树上添加
                    if(root.right == null){//右节点没值,添加节点
                        root.right = new Node(value);
                    }else{
                        addNode(root.right, value);
                    }
                }
            }
    
            //测试,创建一个二叉搜索树
            var arr = [9,3,5,4,6,2,7,1,8];
            var tree = buildSearchTree(arr);
            console.log(tree);
    
            //从二叉搜索树中查找某个值
            function searchTree(root, value){
                if(root == null) return false;
                if(root.value == value) return true;
                if(root.value > value){//小于,往左子树上查找
                    return searchTree(root.left, value);
                }else{//大于,往右子树上查找
                    return searchTree(root.right, value);
                }
            }
            //测试,查找二叉搜索树是否存在4
            console.log(searchTree(tree, 4));
        </script>
    </body>
    </html>
    二叉搜索树的创建和查找
  • 相关阅读:
    Codeforces Round #588 (Div. 2) D Marcin and Training Camp
    DFS / BFS题目栏 (来自一个队友退役后,不得不,重拾图论的选手的叹息)
    Codeforces Round #588 (Div. 2) Anadi and Domino (dfs)
    Codeforces Round #585 (Div. 2) A,B,C,D
    【题解】牛客挑战赛32 (两道水题+一题矩阵快速幂)
    c/c++输入时间问题
    莫队 + 带修莫队
    hdu 5775 Bubble Sort (树状数组)
    UVALive 4329 Ping pong (树状数组)
    hdu 5754 Life Winner Bo(博弈)
  • 原文地址:https://www.cnblogs.com/lanshanxiao/p/13198037.html
Copyright © 2011-2022 走看看