排序二叉树——查找指定数值是否存在

查找一直是数据里面一个常用的功能,之前写过一个查找最大最小值,假如要判断一个值是否存在,该怎么办呢,其实只要逻辑清晰,按照需求就一个写出一个查找功能。重点还是知道了逻辑,我们脑子里面要会运用所学的敲出代码。不会,那么我们就记到会。下面直接上代码:

<script type="text/javascript">
    function BinaryyTree() {
        var Node=function (key) {              //定义一个节点
            this.key=key;
            this.left=null;
            this.right=null;
        }
        var root =null;
        var insertNode=function (node,newNode) {         //二叉树的实现方法
            if (newNode.key<node.key){
                if (node.left==null){
                    node.left=newNode;
                }else {
                    insertNode(node.left,newNode);
                }
            }else {
                if (node.right==null){
                    node.right=newNode;
                }else {
                    insertNode(node.right,newNode);
                }
            }
        }
        this.insert=function (key) {              //二叉树创建接口
            var newNode= new Node(key);
            if (root===null){
                root=newNode;
            }else {
                insertNode(root,newNode);
            }
        };
        var searchNode=function (node, key) {             //查找节点流程
            if (node===null){
                return false;
            }
            if (key<node.key){
                return searchNode(node.left,key);
            }else if (key>node.key){
                return searchNode(node.right,key);
            }else {
                return true;
            }
        }
        this.search=function (key) {             //查找节点接口
            return searchNode(root,key);
        }
    }
    var node=[7,3,9,5,12,21,18,32];        //创建一个数组
    var binaryyTree= new BinaryyTree();    //构造一颗二叉树
    node.forEach(function (key) {            //创建一颗二叉树
        binaryyTree.insert(key);
    })
    console.log(binaryyTree.search(7)?"7 is found":"7 is not found");
    console.log(binaryyTree.search(22)?"22 is found":"22 is not found");
</script>

代码很简单,但是对于一个小白来说,理解代码,理清逻辑确实需要一段时间。我相信每一个大神都是这样经历过来的,当然后面也会运用所学写出一个小游戏。下面在浏览器运行,然后打开控制台,看看我们写的代码是否运行成功。

查找节点

陈健的个人博客,记录生活所见所感、学习笔记。专注于Web前端_SEO教程_读书心得。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

返回主页看更多
狠狠的抽打博主 支付宝 扫一扫