zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    使用图形界面调试arm程序: insight + gdb
    skyeye相关命令简介
    /bin/sh: can
    安装skyeye1.3.3 过程中可能遇到的问题
    linux下ARM汇编程序的调试
    ARM标准汇编与GNU汇编
    从ARMASM汇编到GNU ARM ASM汇编
    How much faster is assembly language?
    A number of problems from coded in ARM assembly language Problems
    An exploration of ARM assembly language
  • 原文地址:https://www.cnblogs.com/xiaohualu/p/10308071.html
Copyright © 2011-2022 走看看