• js实现创建二叉树+先序遍历


    二叉树概念

    1.除了最下面一层,每个节点都是父节点,每个节点都有且最多有两个子节点;

    2.除了嘴上面一层,每个节点是子节点,每个节点都会有一个父节点;

    3.最上面一层的节点为根节点;

    图例说明:

    先序遍历概念

    先打印父节点,然后是左子节点(左子树),然后再打印右子节点(子树)

    图例说明:

    最后贴代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script>
            //创建二叉树
            function Node(data,left,right){
                this.data = data;
                this.left = left;
                this.right = right;
            }
            Node.prototype.show = function(){
                return this.data;
            }
            function BST(){
                this.root = null;
            }
            BST.prototype.insert = function(data){
                var node = new Node(data,null,null);
                if(this.root == null){
                    this.root = node;
                }else{
                    var current = this.root;
                    var parent;
                    while(true){
                        parent = current;
                        if(data < current.data){
                            current = current.left;
                            if(current == null){
                                parent.left = node;
                                break;
                            }
                        }else{
                            current = current.right;
                            if(current == null){
                                parent.right = node;
                                break;
                            }
                        }
                    }
                }
            }
            //二叉树先序遍历
            BST.prototype.perOrder = function(node){
                if(node){
                    console.log(node.show() + " ");
                    this.perOrder(node.left);
                    this.perOrder(node.right);
                }
            }
            //测试数据
            var bst  = new BST();
            var nums = [10,3,18,2,4,13,21,9,8,9];
            for(var i = 0;i < nums.length;i ++){
                bst.insert(nums[i]);
            }
            bst.perOrder(bst.root);
        </script>
    </body>
    </html>
  • 相关阅读:
    软件工程第八周
    e课表项目第二次冲刺周期第十天
    蓝桥杯java历年真题及答案整理41~56
    蓝桥杯java历年真题及答案整理21~40
    蓝桥杯java历年真题及答案整理1~20.md
    异序二分查找 二分查找方程根 二分查找重复元素最后一个
    软件说明
    遗传算法--句子匹配
    Matlab学习笔记
    使用TenforFlow 搭建BP神经网络拟合二次函数
  • 原文地址:https://www.cnblogs.com/xiaohualu/p/10308071.html
Copyright © 2020-2023  润新知