置顶 js 二叉树

技术 demo 前端

JavaScript

2020-06-23 09:42:39

249

作者:黑夜男神

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>js二叉树</title>
</head>
<body>
  <script>
    // 二叉树构造函数
    function BinaryTree() {
      // 节点的构造函数
      var Node = function(key) {
        this.key = key; // 节点的值
        this.left = null; // 左子树节点
        this.right = null; // 右子树节点
      }

      // 根节点
      var root = null;

      // 插入root的子节点
      var insertNode = function(parentNode, childNode){
        debugger
        // 左子树构造
        if (childNode.key < parentNode.key) {
          // 为空时赋值,否则继续延伸
          if (parentNode.left === null) {
            parentNode.left = childNode;
          } else {
            insertNode(parentNode.left, childNode);
          }
        } else { // 右子树的构造 childNode.key > parentNode.key
          if (parentNode.right === null) {
            parentNode.right = childNode;
          } else {
            insertNode(parentNode.right, childNode);
          }
        }

      }

      this.getRoot = function() {
        return root;
      }

      // 插入节点的实例方法
      this.insert = function(key) {
        debugger
        var thisNode = new Node(key);

        // 根节点赋值
        if (root === null) {
          root = thisNode;
        } else {
          // 插入子节点
          insertNode(root, thisNode);
        }
      }
    }

    var nodes = [8, 3, 10, 1, 5, 14, 4, 6, 13,212,111,545,22,122,15,58];
    var binaryTree = new BinaryTree();
    nodes.forEach( key => {
      binaryTree.insert(key);
    });
    console.log(binaryTree.getRoot());

  </script>
</body>
</html>

评论 (0)

用户名
邮箱
评论

    Copyright © 2020 darkNightMan All Rights Reserved Pro 黔ICP备20005477号