<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ```js // 排序二叉樹 function BinaryTree () { // 根節點 var root = null // 節點類 var Node = function (key) { this.key = key this.left = null this.right = null } // 獲取二叉樹所有節點 this.getNodes = function () { return root } /** * 二叉樹節點插入 */ var insertNode = function (node, newNode) { if(newNode.key < node.key) { if (!node.left) { node.left = newNode } else { insertNode(node.left, newNode) } } else { if (!node.right) { node.right = newNode } else { insertNode(node.right, newNode) } } } // 插入節點 this.insert = function (key) { var newNode = new Node(key) if (!root) { root = newNode } else { insertNode(root, newNode) } } /** * 二叉樹遍歷 */ var inOrderTraverseNode = function (node, callback) { if (node) { inOrderTraverseNode(node.left, callback) callback(node.key) inOrderTraverseNode(node.right, callback) } } var preOrderTraverseNode = function (node, callback) { if (node) { callback(node.key) inOrderTraverseNode(node.left, callback) inOrderTraverseNode(node.right, callback) } } var postOrderTraverseNode = function (node, callback) { if (node) { postOrderTraverseNode(node.left, callback) postOrderTraverseNode(node.right, callback) callback(node.key) } } // 中序遍歷二叉樹 (用與升序排序二叉樹) this.inOrderTraverse = function (callback) { inOrderTraverseNode(root, callback) } // 前序遍歷二叉樹 (用于復制二叉樹) this.preOrderTraverse = function (callback) { preOrderTraverseNode(root, callback) } // 后序遍歷二叉樹 (用于遍歷文件系統的所有子文件夾) this.postOrderTraverse = function (callback) { postOrderTraverseNode(root, callback) } /** * 二叉樹查找 */ // 查找二叉樹中值最小的節點 this.min = function () { var node = root if (node) { while (node && node.left) { node = node.left } return node.key } return null } // 查找二叉樹中值最大的節點 this.max = function () { var node = root if (node) { while (node && node.right) { node = node.right } return node.key } return null } // 查找指定節點 this.search = function (key) { var node = root while (node) { if (key < node.key) { node = node.left } else if (key > node.key) { node = node.right } else { return true } } return false } /** * 刪除二叉樹節點 */ var findMinNode = function (node) { if (node) { while (node && node.left) { node = node.left } return node } return null } var removeNode = function (node, key) { if (!node) { return null } if (key < node.key) { node.left = removeNode(node.left, key) } else if (key > node.key) { node.right = removeNode(node.right, key) } else { // 找到要刪除節點的位置 if (!node.left && !node.right) { node = null } else if (!node.left) { node = node.right } else if (!node.right) { node = node.left } else { var aux = findMinNode(node.right) node.key = aux.key node.right = removeNode(node.right, aux.key) } } return node } this.remove = function (key) { root = removeNode(root, key) } } var binaryTree = new BinaryTree() var nodes = [8,3,10,1,6,14,4,7,13] nodes.forEach(key => { binaryTree.insert(key) }) binaryTree.inOrderTraverse(key => console.log(key)) binaryTree.preOrderTraverse(key => console.log(key)) binaryTree.postOrderTraverse(key => console.log(key)) console.log(binaryTree.min()) console.log(binaryTree.max()) console.log(binaryTree.search(6)) console.log(binaryTree.search(5)) binaryTree.remove(3) console.log(binaryTree.getNodes()) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看