avl-tree-typed 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cjs/index.cjs +8 -8
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs-legacy/index.cjs +8 -8
  4. package/dist/cjs-legacy/index.cjs.map +1 -1
  5. package/dist/esm/index.mjs +8 -8
  6. package/dist/esm/index.mjs.map +1 -1
  7. package/dist/esm-legacy/index.mjs +8 -8
  8. package/dist/esm-legacy/index.mjs.map +1 -1
  9. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +3 -1
  10. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  11. package/dist/types/data-structures/binary-tree/bst.d.ts +1 -0
  12. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +1 -0
  13. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -0
  14. package/dist/types/types/data-structures/base/base.d.ts +1 -1
  15. package/dist/umd/avl-tree-typed.js +8 -8
  16. package/dist/umd/avl-tree-typed.js.map +1 -1
  17. package/dist/umd/avl-tree-typed.min.js +2 -2
  18. package/dist/umd/avl-tree-typed.min.js.map +1 -1
  19. package/package.json +2 -2
  20. package/src/data-structures/base/iterable-entry-base.ts +4 -4
  21. package/src/data-structures/binary-tree/avl-tree-counter.ts +1 -1
  22. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
  23. package/src/data-structures/binary-tree/avl-tree.ts +4 -2
  24. package/src/data-structures/binary-tree/binary-tree.ts +3 -2
  25. package/src/data-structures/binary-tree/bst.ts +2 -1
  26. package/src/data-structures/binary-tree/red-black-tree.ts +2 -1
  27. package/src/data-structures/binary-tree/tree-counter.ts +1 -1
  28. package/src/data-structures/binary-tree/tree-multi-map.ts +2 -1
  29. package/src/data-structures/graph/abstract-graph.ts +3 -3
  30. package/src/data-structures/hash/hash-map.ts +4 -4
  31. package/src/types/data-structures/base/base.ts +1 -1
@@ -1,8 +1,8 @@
1
- "use strict";var avlTreeTyped=(()=>{var S=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var W=(h,r,e)=>r in h?S(h,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[r]=e;var X=(h,r)=>{for(var e in r)S(h,e,{get:r[e],enumerable:!0})},J=(h,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of j(r))!q.call(h,n)&&n!==e&&S(h,n,{get:()=>r[n],enumerable:!(t=G(r,n))||t.enumerable});return h};var Y=h=>J(S({},"__esModule",{value:!0}),h);var c=(h,r,e)=>W(h,typeof r!="symbol"?r+"":r,e);var ee={};X(ee,{AVLTree:()=>P,AVLTreeNode:()=>k,BST:()=>I,BSTNode:()=>L,BinaryTree:()=>C,BinaryTreeNode:()=>E});function A(h){let r=typeof h;return r==="number"?!0:r==="bigint"||r==="string"||r==="boolean"}function H(h){if(typeof h.valueOf=="function"){let r=h.valueOf();if(r!==h){if(A(r))return r;if(typeof r=="object"&&r!==null)return H(r)}}if(typeof h.toString=="function"){let r=h.toString();if(r!=="[object Object]")return r}return null}function g(h,r=!1){if(h==null)return!1;if(A(h))return!0;if(typeof h!="object")return!1;if(h instanceof Date||r)return!0;let e=H(h);return e==null?!1:A(e)}var D=h=>({isThunk:!0,fn:h}),Z=h=>typeof h=="object"&&h!==null&&"isThunk"in h&&h.isThunk;function $(h){let r=h;for(;Z(r);)r=r.fn();return r}function F(h){return(...r)=>$(h(...r))}var x=class{constructor(r){c(this,"_toElementFn");if(r){let{toElementFn:e}=r;if(typeof e=="function")this._toElementFn=e;else if(e)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...r){yield*this._getIterator(...r)}*values(){for(let r of this)yield r}every(r,e){let t=0;for(let n of this)if(e===void 0){if(!r(n,t++,this))return!1}else if(!r.call(e,n,t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return!0}else if(r.call(e,n,t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this)e===void 0?r(n,t++,this):r.call(e,n,t++,this)}find(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return n}else if(r.call(e,n,t++,this))return n}has(r){for(let e of this)if(e===r)return!0;return!1}reduce(r,e){let t=0,n=this[Symbol.iterator](),i;if(arguments.length>=2)i=e;else{let s=n.next();if(s.done)throw new TypeError("Reduce of empty structure with no initial value");i=s.value,t=1}for(let s of n)i=r(i,s,t++,this);return i}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var w=class h extends x{constructor(e){super(e);c(this,"_maxLen",-1);if(e){let{maxLen:t}=e;typeof t=="number"&&t>0&&t%1===0&&(this._maxLen=t)}}get maxLen(){return this._maxLen}indexOf(e,t=0){if(this.length===0)return-1;t<0&&(t=this.length+t),t<0&&(t=0);for(let n=t;n<this.length;n++)if(this.at(n)===e)return n;return-1}lastIndexOf(e,t=this.length-1){if(this.length===0)return-1;t>=this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(let n=t;n>=0;n--)if(this.at(n)===e)return n;return-1}findIndex(e,t){for(let n=0;n<this.length;n++){let i=this.at(n);if(i!==void 0&&e.call(t,i,n,this))return n}return-1}concat(...e){let t=this.clone();for(let n of e)n instanceof h?t.pushMany(n):t.push(n);return t}sort(e){let t=this.toArray();t.sort(e),this.clear();for(let n of t)this.push(n);return this}splice(e,t=0,...n){let i=this._createInstance();e=e<0?this.length+e:e,e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,Math.min(t,this.length-e));for(let s=0;s<t;s++){let o=this.deleteAt(e);o!==void 0&&i.push(o)}for(let s=0;s<n.length;s++)this.addAt(e+s,n[s]);return i}join(e=","){return this.toArray().join(e)}toReversedArray(){let e=[];for(let t=this.length-1;t>=0;t--)e.push(this.at(t));return e}reduceRight(e,t){let n=t!=null?t:0;for(let i=this.length-1;i>=0;i--)n=e(n,this.at(i),i,this);return n}slice(e=0,t=this.length){e=e<0?this.length+e:e,t=t<0?this.length+t:t;let n=this._createInstance();for(let i=e;i<t;i++)n.push(this.at(i));return n}fill(e,t=0,n=this.length){if(t=t<0?this.length+t:t,n=n<0?this.length+n:n,t<0&&(t=0),n>this.length&&(n=this.length),t>=n)return this;for(let i=t;i<n;i++)this.setAt(i,e);return this}};var m=class h extends w{constructor(e=[],t){super(t);c(this,"_elements",[]);c(this,"_offset",0);c(this,"_autoCompactRatio",.5);if(t){let{autoCompactRatio:n=.5}=t;this._autoCompactRatio=n}this.pushMany(e)}get elements(){return this._elements}get offset(){return this._offset}get autoCompactRatio(){return this._autoCompactRatio}set autoCompactRatio(e){this._autoCompactRatio=e}get length(){return this.elements.length-this._offset}get first(){return this.length>0?this.elements[this._offset]:void 0}get last(){return this.length>0?this.elements[this.elements.length-1]:void 0}static fromArray(e){return new h(e)}isEmpty(){return this.length===0}push(e){return this.elements.push(e),this._maxLen>0&&this.length>this._maxLen&&this.shift(),!0}pushMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.push(this.toElementFn(n))):t.push(this.push(n));return t}shift(){if(this.length===0)return;let e=this.first;return this._offset+=1,this.elements.length>0&&this.offset/this.elements.length>this.autoCompactRatio&&this.compact(),e}delete(e){for(let t=this._offset;t<this.elements.length;t++)if(Object.is(this.elements[t],e))return this.elements.splice(t,1),!0;return!1}at(e){if(!(e<0||e>=this.length))return this._elements[this._offset+e]}deleteAt(e){if(e<0||e>=this.length)return;let t=this._offset+e,[n]=this.elements.splice(t,1);return n}addAt(e,t){return e<0||e>this.length?!1:(this._elements.splice(this._offset+e,0,t),!0)}setAt(e,t){return e<0||e>=this.length?!1:(this._elements[this._offset+e]=t,!0)}reverse(){return this._elements=this.elements.slice(this._offset).reverse(),this._offset=0,this}clear(){this._elements=[],this._offset=0}compact(){return this._elements=this.elements.slice(this._offset),this._offset=0,!0}splice(e,t=0,...n){e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,Math.min(t,this.length-e));let i=this._offset+e,s=this._elements.splice(i,t,...n);this.elements.length>0&&this.offset/this.elements.length>this.autoCompactRatio&&this.compact();let o=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});return o._setAutoCompactRatio(this._autoCompactRatio),o.pushMany(s),o}clone(){let e=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});e._setAutoCompactRatio(this._autoCompactRatio);for(let t=this._offset;t<this.elements.length;t++)e.push(this.elements[t]);return e}filter(e,t){let n=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});n._setAutoCompactRatio(this._autoCompactRatio);let i=0;for(let s of this)e.call(t,s,i,this)&&n.push(s),i++;return n}map(e,t,n){var o,l;let i=new this.constructor([],{toElementFn:t==null?void 0:t.toElementFn,maxLen:(o=t==null?void 0:t.maxLen)!=null?o:this._maxLen,autoCompactRatio:(l=t==null?void 0:t.autoCompactRatio)!=null?l:this._autoCompactRatio}),s=0;for(let u of this)i.push(n===void 0?e(u,s++,this):e.call(n,u,s++,this));return i}mapSame(e,t){var o;let n=this.constructor,i=new n([],{toElementFn:this.toElementFn,maxLen:this._maxLen,autoCompactRatio:this._autoCompactRatio});(o=i._setAutoCompactRatio)==null||o.call(i,this._autoCompactRatio);let s=0;for(let l of this){let u=t===void 0?e(l,s++,this):e.call(t,l,s++,this);i.push(u)}return i}_setAutoCompactRatio(e){this._autoCompactRatio=e}*_getIterator(){for(let e=this._offset;e<this.elements.length;e++)yield this.elements[e]}*_getReverseIterator(){for(let e=this.length-1;e>=0;e--){let t=this.at(e);t!==void 0&&(yield t)}}_createInstance(e){let t=this.constructor;return new t([],e)}_createLike(e=[],t){let n=this.constructor;return new n(e,t)}};var O=class{*[Symbol.iterator](...r){yield*this._getIterator(...r)}*entries(){for(let r of this)yield r}*keys(){for(let r of this)yield r[0]}*values(){for(let r of this)yield r[1]}every(r,e){let t=0;for(let n of this)if(!r.call(e,n[0],n[1],t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(r.call(e,n[0],n[1],t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this){let[i,s]=n;r.call(e,i,s,t++,this)}}find(r,e){let t=0;for(let n of this){let[i,s]=n;if(r.call(e,i,s,t++,this))return n}}has(r){for(let e of this){let[t]=e;if(t===r)return!0}return!1}hasValue(r){for(let[,e]of this)if(e===r)return!0;return!1}get(r){for(let e of this){let[t,n]=e;if(t===r)return n}}reduce(r,e){let t=e,n=0;for(let i of this){let[s,o]=i;t=r(t,o,s,n++,this)}return t}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var _=class{constructor(r,e,t=!0,n=!0){this.low=r;this.high=e;this.includeLow=t;this.includeHigh=n;if(!(g(r)&&g(e)))throw new RangeError("low or high is not comparable");if(r>e)throw new RangeError("low must be less than or equal to high")}isInRange(r,e){let t=this.includeLow?e(r,this.low)>=0:e(r,this.low)>0,n=this.includeHigh?e(r,this.high)<=0:e(r,this.high)<0;return t&&n}};var E=class{constructor(r,e){c(this,"key");c(this,"value");c(this,"parent");c(this,"_left");c(this,"_right");c(this,"_height",0);c(this,"_color","BLACK");c(this,"_count",1);this.key=r,this.value=e}get left(){return this._left}set left(r){r&&(r.parent=this),this._left=r}get right(){return this._right}set right(r){r&&(r.parent=this),this._right=r}get height(){return this._height}set height(r){this._height=r}get color(){return this._color}set color(r){this._color=r}get count(){return this._count}set count(r){this._count=r}get familyPosition(){return this.parent?this.parent.left===this?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===this?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},C=class extends O{constructor(e=[],t){super();c(this,"iterationType","ITERATIVE");c(this,"_isMapMode",!0);c(this,"_isDuplicate",!1);c(this,"_store",new Map);c(this,"_root");c(this,"_size",0);c(this,"_NIL",new E(NaN));c(this,"_toEntryFn");c(this,"_DEFAULT_NODE_CALLBACK",e=>e?e.key:void 0);if(t){let{iterationType:n,toEntryFn:i,isMapMode:s,isDuplicate:o}=t;if(n&&(this.iterationType=n),s!==void 0&&(this._isMapMode=s),o!==void 0&&(this._isDuplicate=o),typeof i=="function")this._toEntryFn=i;else if(i)throw TypeError("toEntryFn must be a function type")}e&&this.addMany(e)}get isMapMode(){return this._isMapMode}get isDuplicate(){return this._isDuplicate}get store(){return this._store}get root(){return this._root}get size(){return this._size}get NIL(){return this._NIL}get toEntryFn(){return this._toEntryFn}createNode(e,t){return new E(e,this._isMapMode?void 0:t)}createTree(e){return this._createInstance(e)}ensureNode(e,t=this.iterationType){if(e===null)return null;if(e!==void 0&&e!==this._NIL){if(this.isNode(e))return e;if(this.isEntry(e)){let n=e[0];return n===null?null:n===void 0?void 0:this.getNode(n,this._root,t)}return this.getNode(e,this._root,t)}}isNode(e){return e instanceof E}isRaw(e){return this._toEntryFn!==void 0&&typeof e=="object"}isRealNode(e){return e===this._NIL||e===null||e===void 0?!1:this.isNode(e)}isRealNodeOrNull(e){return e===null||this.isRealNode(e)}isNIL(e){return e===this._NIL}isRange(e){return e instanceof _}isLeaf(e){return e=this.ensureNode(e),e===void 0?!1:e===null?!0:!this.isRealNode(e.left)&&!this.isRealNode(e.right)}isEntry(e){return Array.isArray(e)&&e.length===2}isValidKey(e){return e===null?!0:g(e)}add(e,t){let[n,i]=this._keyValueNodeOrEntryToNodeAndValue(e,t);if(n===void 0)return!1;if(!this._root)return this._setRoot(n),this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size=1,!0;let s=new m([this._root]),o;for(;s.length>0;){let l=s.shift();if(l){if(!this._isDuplicate&&n!==null&&l.key===n.key)return this._replaceNode(l,n),this._isMapMode&&this._setValue(l.key,i),!0;o===void 0&&(l.left===void 0||l.right===void 0)&&(o=l),l.left!==null&&l.left&&s.push(l.left),l.right!==null&&l.right&&s.push(l.right)}}return o?(o.left===void 0?o.left=n:o.right===void 0&&(o.right=n),this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0):!1}addMany(e,t){let n=[],i;t&&(i=t[Symbol.iterator]());for(let s of e){let o;if(i){let l=i.next();l.done||(o=l.value)}this.isRaw(s)&&(s=this._toEntryFn(s)),n.push(this.add(s,o))}return n}merge(e){this.addMany(e,[])}refill(e,t){this.clear(),this.addMany(e,t)}delete(e){let t=[];if(!this._root)return t;let n=this.getNode(e);if(!n)return t;let i=n==null?void 0:n.parent,s,o=n;if(!n.left&&!n.right&&!i)this._setRoot(void 0);else if(n.left){let l=this.getRightMost(u=>u,n.left);if(l){let u=l.parent;o=this._swapProperties(n,l),u&&(u.right===l?u.right=l.left:u.left=l.left,s=u)}}else if(i){let{familyPosition:l}=n;l==="LEFT"||l==="ROOT_LEFT"?i.left=n.right:(l==="RIGHT"||l==="ROOT_RIGHT")&&(i.right=n.right),s=i}else this._setRoot(n.right),n.right=void 0;return this._size=this._size-1,t.push({deleted:o,needBalanced:s}),this._isMapMode&&o&&this._store.delete(o.key),t}search(e,t=!1,n=this._DEFAULT_NODE_CALLBACK,i=this._root,s=this.iterationType){if(e===void 0)return[];if(e===null)return[];if(i=this.ensureNode(i),!i)return[];let o=this._ensurePredicate(e),l=[];if(s==="RECURSIVE"){let u=a=>{o(a)&&(l.push(n(a)),t)||!this.isRealNode(a.left)&&!this.isRealNode(a.right)||(this.isRealNode(a.left)&&u(a.left),this.isRealNode(a.right)&&u(a.right))};u(i)}else{let u=[i];for(;u.length>0;){let a=u.pop();if(this.isRealNode(a)){if(o(a)&&(l.push(n(a)),t))return l;this.isRealNode(a.left)&&u.push(a.left),this.isRealNode(a.right)&&u.push(a.right)}}}return l}getNodes(e,t=!1,n=this._root,i=this.iterationType){return this.search(e,t,s=>s,n,i)}getNode(e,t=this._root,n=this.iterationType){return this.search(e,!0,i=>i,t,n)[0]}get(e,t=this._root,n=this.iterationType){var i;if(this._isMapMode){let s=this._extractKey(e);return s==null?void 0:this._store.get(s)}return(i=this.getNode(e,t,n))==null?void 0:i.value}has(e,t=this._root,n=this.iterationType){return this.search(e,!0,i=>i,t,n).length>0}clear(){this._clearNodes(),this._isMapMode&&this._clearValues()}isEmpty(){return this._size===0}isPerfectlyBalanced(e=this._root){return this.getMinHeight(e)+1>=this.getHeight(e)}isBST(e=this._root,t=this.iterationType){let n=this.ensureNode(e);if(!n)return!0;if(t==="RECURSIVE"){let i=(l,u,a)=>{if(!this.isRealNode(l))return!0;let d=Number(l.key);return d<=u||d>=a?!1:i(l.left,u,d)&&i(l.right,d,a)},s=i(n,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),o=i(n,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);return s||o}else{let i=(l=!1)=>{let u=[],a=l?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,d=n;for(;this.isRealNode(d)||u.length>0;){for(;this.isRealNode(d);)u.push(d),d=d.left;d=u.pop();let p=Number(d.key);if(!this.isRealNode(d)||!l&&a>=p||l&&a<=p)return!1;a=p,d=d.right}return!0},s=i(!1),o=i(!0);return s||o}}getDepth(e,t=this._root){let n=this.ensureNode(e),i=this.ensureNode(t),s=0;for(;n!=null&&n.parent;){if(n===i)return s;s++,n=n.parent}return s}getHeight(e=this._root,t=this.iterationType){if(e=this.ensureNode(e),!this.isRealNode(e))return-1;if(t==="RECURSIVE"){let n=i=>{if(!this.isRealNode(i))return-1;let s=n(i.left),o=n(i.right);return Math.max(s,o)+1};return n(e)}else{let n=[{node:e,depth:0}],i=0;for(;n.length>0;){let{node:s,depth:o}=n.pop();this.isRealNode(s.left)&&n.push({node:s.left,depth:o+1}),this.isRealNode(s.right)&&n.push({node:s.right,depth:o+1}),i=Math.max(i,o)}return i}}getMinHeight(e=this._root,t=this.iterationType){if(e=this.ensureNode(e),!e)return-1;if(t==="RECURSIVE"){let n=i=>{if(!this.isRealNode(i)||!this.isRealNode(i.left)&&!this.isRealNode(i.right))return 0;let s=n(i.left),o=n(i.right);return Math.min(s,o)+1};return n(e)}else{let n=[],i=e,s=null,o=new Map;for(;n.length>0||i;)if(this.isRealNode(i))n.push(i),i=i.left;else if(i=n[n.length-1],!this.isRealNode(i.right)||s===i.right){if(i=n.pop(),this.isRealNode(i)){let l=this.isRealNode(i.left)?o.get(i.left):-1,u=this.isRealNode(i.right)?o.get(i.right):-1;o.set(i,1+Math.min(l,u)),s=i,i=null}}else i=i.right;return o.get(e)}}getPathToRoot(e,t=this._DEFAULT_NODE_CALLBACK,n=!1){let i=[],s=this.ensureNode(e);if(!s)return i;for(;s.parent;)i.push(t(s)),s=s.parent;return i.push(t(s)),n?i.reverse():i}getLeftMost(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){if(this.isNIL(t))return e(void 0);let i=this.ensureNode(t);if(!this.isRealNode(i))return e(void 0);if(n==="RECURSIVE"){let s=o=>{let{left:l}=o;return this.isRealNode(l)?s(l):o};return e(s(i))}else{let s=F(o=>{let{left:l}=o;return this.isRealNode(l)?D(()=>s(l)):o});return e(s(i))}}getRightMost(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){if(this.isNIL(t)||(t=this.ensureNode(t),!t))return e(void 0);if(n==="RECURSIVE"){let i=s=>{let{right:o}=s;return this.isRealNode(o)?i(o):s};return e(i(t))}else{let i=F(s=>{let{right:o}=s;return this.isRealNode(o)?D(()=>i(o)):s});return e(i(t))}}getPredecessor(e){if(this.isRealNode(e.left)){let t=e.left;for(;!this.isRealNode(t)||this.isRealNode(t.right)&&t.right!==e;)this.isRealNode(t)&&(t=t.right);return t}else return e}getSuccessor(e){if(e=this.ensureNode(e),!this.isRealNode(e))return;if(this.isRealNode(e.right))return this.getLeftMost(n=>n,e.right);let t=e.parent;for(;this.isRealNode(t)&&e===t.right;)e=t,t=t.parent;return t}dfs(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=!1,i=this._root,s=this.iterationType,o=!1){return i=this.ensureNode(i),i?this._dfs(e,t,n,i,s,o):[]}bfs(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType,i=!1){if(t=this.ensureNode(t),!t)return[];let s=[];if(n==="RECURSIVE"){let o=new m([t]),l=u=>{if(o.length===0)return;let a=o.shift();s.push(e(a)),i?(a&&this.isRealNodeOrNull(a.left)&&o.push(a.left),a&&this.isRealNodeOrNull(a.right)&&o.push(a.right)):(this.isRealNode(a.left)&&o.push(a.left),this.isRealNode(a.right)&&o.push(a.right)),l(u+1)};l(0)}else{let o=new m([t]);for(;o.length>0;){let l=o.length;for(let u=0;u<l;u++){let a=o.shift();s.push(e(a)),i?(a&&this.isRealNodeOrNull(a.left)&&o.push(a.left),a&&this.isRealNodeOrNull(a.right)&&o.push(a.right)):(this.isRealNode(a.left)&&o.push(a.left),this.isRealNode(a.right)&&o.push(a.right))}}}return s}leaves(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){t=this.ensureNode(t);let i=[];if(!this.isRealNode(t))return[];if(n==="RECURSIVE"){let s=o=>{this.isLeaf(o)&&i.push(e(o)),!(!this.isRealNode(o.left)&&!this.isRealNode(o.right))&&(this.isRealNode(o.left)&&s(o.left),this.isRealNode(o.right)&&s(o.right))};s(t)}else{let s=new m([t]);for(;s.length>0;){let o=s.shift();this.isRealNode(o)&&(this.isLeaf(o)&&i.push(e(o)),this.isRealNode(o.left)&&s.push(o.left),this.isRealNode(o.right)&&s.push(o.right))}}return i}listLevels(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType,i=!1){t=this.ensureNode(t);let s=[];if(!t)return s;if(n==="RECURSIVE"){let o=(l,u)=>{s[u]||(s[u]=[]),s[u].push(e(l)),i?(l&&this.isRealNodeOrNull(l.left)&&o(l.left,u+1),l&&this.isRealNodeOrNull(l.right)&&o(l.right,u+1)):(l&&l.left&&o(l.left,u+1),l&&l.right&&o(l.right,u+1))};o(t,0)}else{let o=[[t,0]];for(;o.length>0;){let l=o.pop(),[u,a]=l;s[a]||(s[a]=[]),s[a].push(e(u)),i?(u&&this.isRealNodeOrNull(u.right)&&o.push([u.right,a+1]),u&&this.isRealNodeOrNull(u.left)&&o.push([u.left,a+1])):(u&&u.right&&o.push([u.right,a+1]),u&&u.left&&o.push([u.left,a+1]))}}return s}morris(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=this._root){if(n=this.ensureNode(n),!n)return[];let i=[],s=n,o=u=>{let a=null,d=null;for(;u;)d=u.right,u.right=a,a=u,u=d;return a},l=u=>{let a=o(u),d=a;for(;d;)i.push(e(d)),d=d.right;o(a)};switch(t){case"IN":for(;s;){if(s.left){let u=this.getPredecessor(s);if(u.right)u.right=null;else{u.right=s,s=s.left;continue}}i.push(e(s)),s=s.right}break;case"PRE":for(;s;){if(s.left){let u=this.getPredecessor(s);if(u.right)u.right=null;else{u.right=s,i.push(e(s)),s=s.left;continue}}else i.push(e(s));s=s.right}break;case"POST":for(;s;){if(s.left){let u=this.getPredecessor(s);if(u.right===null){u.right=s,s=s.left;continue}else u.right=null,l(s.left)}s=s.right}l(n);break}return i}clone(){let e=this._createInstance();return this._clone(e),e}filter(e,t){let n=this._createInstance(),i=0;for(let[s,o]of this)e.call(t,s,o,i++,this)&&n.add([s,o]);return n}map(e,t,n){let i=this._createLike([],t),s=0;for(let[o,l]of this)i.add(e.call(n,o,l,s++,this));return i}toVisual(e=this._root,t){let n={isShowUndefined:!1,isShowNull:!0,isShowRedBlackNIL:!1,...t};e=this.ensureNode(e);let i="";return e&&(n.isShowUndefined&&(i+=`U for undefined
1
+ "use strict";var avlTreeTyped=(()=>{var S=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var q=Object.prototype.hasOwnProperty;var W=(h,r,e)=>r in h?S(h,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[r]=e;var X=(h,r)=>{for(var e in r)S(h,e,{get:r[e],enumerable:!0})},J=(h,r,e,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of j(r))!q.call(h,n)&&n!==e&&S(h,n,{get:()=>r[n],enumerable:!(t=G(r,n))||t.enumerable});return h};var Y=h=>J(S({},"__esModule",{value:!0}),h);var c=(h,r,e)=>W(h,typeof r!="symbol"?r+"":r,e);var ee={};X(ee,{AVLTree:()=>P,AVLTreeNode:()=>k,BST:()=>I,BSTNode:()=>L,BinaryTree:()=>C,BinaryTreeNode:()=>E});function A(h){let r=typeof h;return r==="number"?!0:r==="bigint"||r==="string"||r==="boolean"}function H(h){if(typeof h.valueOf=="function"){let r=h.valueOf();if(r!==h){if(A(r))return r;if(typeof r=="object"&&r!==null)return H(r)}}if(typeof h.toString=="function"){let r=h.toString();if(r!=="[object Object]")return r}return null}function g(h,r=!1){if(h==null)return!1;if(A(h))return!0;if(typeof h!="object")return!1;if(h instanceof Date||r)return!0;let e=H(h);return e==null?!1:A(e)}var D=h=>({isThunk:!0,fn:h}),Z=h=>typeof h=="object"&&h!==null&&"isThunk"in h&&h.isThunk;function $(h){let r=h;for(;Z(r);)r=r.fn();return r}function F(h){return(...r)=>$(h(...r))}var x=class{constructor(r){c(this,"_toElementFn");if(r){let{toElementFn:e}=r;if(typeof e=="function")this._toElementFn=e;else if(e)throw new TypeError("toElementFn must be a function type")}}get toElementFn(){return this._toElementFn}*[Symbol.iterator](...r){yield*this._getIterator(...r)}*values(){for(let r of this)yield r}every(r,e){let t=0;for(let n of this)if(e===void 0){if(!r(n,t++,this))return!1}else if(!r.call(e,n,t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return!0}else if(r.call(e,n,t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this)e===void 0?r(n,t++,this):r.call(e,n,t++,this)}find(r,e){let t=0;for(let n of this)if(e===void 0){if(r(n,t++,this))return n}else if(r.call(e,n,t++,this))return n}has(r){for(let e of this)if(e===r)return!0;return!1}reduce(r,e){let t=0,n=this[Symbol.iterator](),i;if(arguments.length>=2)i=e;else{let s=n.next();if(s.done)throw new TypeError("Reduce of empty structure with no initial value");i=s.value,t=1}for(let s of n)i=r(i,s,t++,this);return i}toArray(){return[...this]}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var w=class h extends x{constructor(e){super(e);c(this,"_maxLen",-1);if(e){let{maxLen:t}=e;typeof t=="number"&&t>0&&t%1===0&&(this._maxLen=t)}}get maxLen(){return this._maxLen}indexOf(e,t=0){if(this.length===0)return-1;t<0&&(t=this.length+t),t<0&&(t=0);for(let n=t;n<this.length;n++)if(this.at(n)===e)return n;return-1}lastIndexOf(e,t=this.length-1){if(this.length===0)return-1;t>=this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(let n=t;n>=0;n--)if(this.at(n)===e)return n;return-1}findIndex(e,t){for(let n=0;n<this.length;n++){let i=this.at(n);if(i!==void 0&&e.call(t,i,n,this))return n}return-1}concat(...e){let t=this.clone();for(let n of e)n instanceof h?t.pushMany(n):t.push(n);return t}sort(e){let t=this.toArray();t.sort(e),this.clear();for(let n of t)this.push(n);return this}splice(e,t=0,...n){let i=this._createInstance();e=e<0?this.length+e:e,e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,Math.min(t,this.length-e));for(let s=0;s<t;s++){let o=this.deleteAt(e);o!==void 0&&i.push(o)}for(let s=0;s<n.length;s++)this.addAt(e+s,n[s]);return i}join(e=","){return this.toArray().join(e)}toReversedArray(){let e=[];for(let t=this.length-1;t>=0;t--)e.push(this.at(t));return e}reduceRight(e,t){let n=t!=null?t:0;for(let i=this.length-1;i>=0;i--)n=e(n,this.at(i),i,this);return n}slice(e=0,t=this.length){e=e<0?this.length+e:e,t=t<0?this.length+t:t;let n=this._createInstance();for(let i=e;i<t;i++)n.push(this.at(i));return n}fill(e,t=0,n=this.length){if(t=t<0?this.length+t:t,n=n<0?this.length+n:n,t<0&&(t=0),n>this.length&&(n=this.length),t>=n)return this;for(let i=t;i<n;i++)this.setAt(i,e);return this}};var m=class h extends w{constructor(e=[],t){super(t);c(this,"_elements",[]);c(this,"_offset",0);c(this,"_autoCompactRatio",.5);if(t){let{autoCompactRatio:n=.5}=t;this._autoCompactRatio=n}this.pushMany(e)}get elements(){return this._elements}get offset(){return this._offset}get autoCompactRatio(){return this._autoCompactRatio}set autoCompactRatio(e){this._autoCompactRatio=e}get length(){return this.elements.length-this._offset}get first(){return this.length>0?this.elements[this._offset]:void 0}get last(){return this.length>0?this.elements[this.elements.length-1]:void 0}static fromArray(e){return new h(e)}isEmpty(){return this.length===0}push(e){return this.elements.push(e),this._maxLen>0&&this.length>this._maxLen&&this.shift(),!0}pushMany(e){let t=[];for(let n of e)this.toElementFn?t.push(this.push(this.toElementFn(n))):t.push(this.push(n));return t}shift(){if(this.length===0)return;let e=this.first;return this._offset+=1,this.elements.length>0&&this.offset/this.elements.length>this.autoCompactRatio&&this.compact(),e}delete(e){for(let t=this._offset;t<this.elements.length;t++)if(Object.is(this.elements[t],e))return this.elements.splice(t,1),!0;return!1}at(e){if(!(e<0||e>=this.length))return this._elements[this._offset+e]}deleteAt(e){if(e<0||e>=this.length)return;let t=this._offset+e,[n]=this.elements.splice(t,1);return n}addAt(e,t){return e<0||e>this.length?!1:(this._elements.splice(this._offset+e,0,t),!0)}setAt(e,t){return e<0||e>=this.length?!1:(this._elements[this._offset+e]=t,!0)}reverse(){return this._elements=this.elements.slice(this._offset).reverse(),this._offset=0,this}clear(){this._elements=[],this._offset=0}compact(){return this._elements=this.elements.slice(this._offset),this._offset=0,!0}splice(e,t=0,...n){e=Math.max(0,Math.min(e,this.length)),t=Math.max(0,Math.min(t,this.length-e));let i=this._offset+e,s=this._elements.splice(i,t,...n);this.elements.length>0&&this.offset/this.elements.length>this.autoCompactRatio&&this.compact();let o=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});return o._setAutoCompactRatio(this._autoCompactRatio),o.pushMany(s),o}clone(){let e=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});e._setAutoCompactRatio(this._autoCompactRatio);for(let t=this._offset;t<this.elements.length;t++)e.push(this.elements[t]);return e}filter(e,t){let n=this._createInstance({toElementFn:this.toElementFn,maxLen:this._maxLen});n._setAutoCompactRatio(this._autoCompactRatio);let i=0;for(let s of this)e.call(t,s,i,this)&&n.push(s),i++;return n}map(e,t,n){var o,l;let i=new this.constructor([],{toElementFn:t==null?void 0:t.toElementFn,maxLen:(o=t==null?void 0:t.maxLen)!=null?o:this._maxLen,autoCompactRatio:(l=t==null?void 0:t.autoCompactRatio)!=null?l:this._autoCompactRatio}),s=0;for(let u of this)i.push(n===void 0?e(u,s++,this):e.call(n,u,s++,this));return i}mapSame(e,t){var o;let n=this.constructor,i=new n([],{toElementFn:this.toElementFn,maxLen:this._maxLen,autoCompactRatio:this._autoCompactRatio});(o=i._setAutoCompactRatio)==null||o.call(i,this._autoCompactRatio);let s=0;for(let l of this){let u=t===void 0?e(l,s++,this):e.call(t,l,s++,this);i.push(u)}return i}_setAutoCompactRatio(e){this._autoCompactRatio=e}*_getIterator(){for(let e=this._offset;e<this.elements.length;e++)yield this.elements[e]}*_getReverseIterator(){for(let e=this.length-1;e>=0;e--){let t=this.at(e);t!==void 0&&(yield t)}}_createInstance(e){let t=this.constructor;return new t([],e)}_createLike(e=[],t){let n=this.constructor;return new n(e,t)}};var O=class{*[Symbol.iterator](...r){yield*this._getIterator(...r)}*entries(){for(let r of this)yield r}*keys(){for(let r of this)yield r[0]}*values(){for(let r of this)yield r[1]}every(r,e){let t=0;for(let n of this)if(!r.call(e,n[1],n[0],t++,this))return!1;return!0}some(r,e){let t=0;for(let n of this)if(r.call(e,n[1],n[0],t++,this))return!0;return!1}forEach(r,e){let t=0;for(let n of this){let[i,s]=n;r.call(e,s,i,t++,this)}}find(r,e){let t=0;for(let n of this){let[i,s]=n;if(r.call(e,s,i,t++,this))return n}}has(r){for(let e of this){let[t]=e;if(t===r)return!0}return!1}hasValue(r){for(let[,e]of this)if(e===r)return!0;return!1}get(r){for(let e of this){let[t,n]=e;if(t===r)return n}}reduce(r,e){let t=e,n=0;for(let i of this){let[s,o]=i;t=r(t,o,s,n++,this)}return t}toVisual(){return[...this]}print(){console.log(this.toVisual())}};var _=class{constructor(r,e,t=!0,n=!0){this.low=r;this.high=e;this.includeLow=t;this.includeHigh=n;if(!(g(r)&&g(e)))throw new RangeError("low or high is not comparable");if(r>e)throw new RangeError("low must be less than or equal to high")}isInRange(r,e){let t=this.includeLow?e(r,this.low)>=0:e(r,this.low)>0,n=this.includeHigh?e(r,this.high)<=0:e(r,this.high)<0;return t&&n}};var E=class{constructor(r,e){c(this,"key");c(this,"value");c(this,"parent");c(this,"_left");c(this,"_right");c(this,"_height",0);c(this,"_color","BLACK");c(this,"_count",1);this.key=r,this.value=e}get left(){return this._left}set left(r){r&&(r.parent=this),this._left=r}get right(){return this._right}set right(r){r&&(r.parent=this),this._right=r}get height(){return this._height}set height(r){this._height=r}get color(){return this._color}set color(r){this._color=r}get count(){return this._count}set count(r){this._count=r}get familyPosition(){return this.parent?this.parent.left===this?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===this?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},C=class extends O{constructor(e=[],t){super();c(this,"iterationType","ITERATIVE");c(this,"_isMapMode",!0);c(this,"_isDuplicate",!1);c(this,"_store",new Map);c(this,"_root");c(this,"_size",0);c(this,"_NIL",new E(NaN));c(this,"_toEntryFn");c(this,"_DEFAULT_NODE_CALLBACK",e=>e?e.key:void 0);if(t){let{iterationType:n,toEntryFn:i,isMapMode:s,isDuplicate:o}=t;if(n&&(this.iterationType=n),s!==void 0&&(this._isMapMode=s),o!==void 0&&(this._isDuplicate=o),typeof i=="function")this._toEntryFn=i;else if(i)throw TypeError("toEntryFn must be a function type")}e&&this.addMany(e)}get isMapMode(){return this._isMapMode}get isDuplicate(){return this._isDuplicate}get store(){return this._store}get root(){return this._root}get size(){return this._size}get NIL(){return this._NIL}get toEntryFn(){return this._toEntryFn}createNode(e,t){return new E(e,this._isMapMode?void 0:t)}createTree(e){return this._createInstance(e)}ensureNode(e,t=this.iterationType){if(e===null)return null;if(e!==void 0&&e!==this._NIL){if(this.isNode(e))return e;if(this.isEntry(e)){let n=e[0];return n===null?null:n===void 0?void 0:this.getNode(n,this._root,t)}return this.getNode(e,this._root,t)}}isNode(e){return e instanceof E}isRaw(e){return this._toEntryFn!==void 0&&typeof e=="object"}isRealNode(e){return e===this._NIL||e===null||e===void 0?!1:this.isNode(e)}isRealNodeOrNull(e){return e===null||this.isRealNode(e)}isNIL(e){return e===this._NIL}isRange(e){return e instanceof _}isLeaf(e){return e=this.ensureNode(e),e===void 0?!1:e===null?!0:!this.isRealNode(e.left)&&!this.isRealNode(e.right)}isEntry(e){return Array.isArray(e)&&e.length===2}isValidKey(e){return e===null?!0:g(e)}add(e,t){let[n,i]=this._keyValueNodeOrEntryToNodeAndValue(e,t);if(n===void 0)return!1;if(!this._root)return this._setRoot(n),this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size=1,!0;let s=new m([this._root]),o;for(;s.length>0;){let l=s.shift();if(l){if(!this._isDuplicate&&n!==null&&l.key===n.key)return this._replaceNode(l,n),this._isMapMode&&this._setValue(l.key,i),!0;o===void 0&&(l.left===void 0||l.right===void 0)&&(o=l),l.left!==null&&l.left&&s.push(l.left),l.right!==null&&l.right&&s.push(l.right)}}return o?(o.left===void 0?o.left=n:o.right===void 0&&(o.right=n),this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0):!1}addMany(e,t){let n=[],i;t&&(i=t[Symbol.iterator]());for(let s of e){let o;if(i){let l=i.next();l.done||(o=l.value)}this.isRaw(s)&&(s=this._toEntryFn(s)),n.push(this.add(s,o))}return n}merge(e){this.addMany(e,[])}refill(e,t){this.clear(),this.addMany(e,t)}delete(e){let t=[];if(!this._root)return t;let n=this.getNode(e);if(!n)return t;let i=n==null?void 0:n.parent,s,o=n;if(!n.left&&!n.right&&!i)this._setRoot(void 0);else if(n.left){let l=this.getRightMost(u=>u,n.left);if(l){let u=l.parent;o=this._swapProperties(n,l),u&&(u.right===l?u.right=l.left:u.left=l.left,s=u)}}else if(i){let{familyPosition:l}=n;l==="LEFT"||l==="ROOT_LEFT"?i.left=n.right:(l==="RIGHT"||l==="ROOT_RIGHT")&&(i.right=n.right),s=i}else this._setRoot(n.right),n.right=void 0;return this._size=this._size-1,t.push({deleted:o,needBalanced:s}),this._isMapMode&&o&&this._store.delete(o.key),t}search(e,t=!1,n=this._DEFAULT_NODE_CALLBACK,i=this._root,s=this.iterationType){if(e===void 0)return[];if(e===null)return[];if(i=this.ensureNode(i),!i)return[];let o=this._ensurePredicate(e),l=[];if(s==="RECURSIVE"){let u=a=>{o(a)&&(l.push(n(a)),t)||!this.isRealNode(a.left)&&!this.isRealNode(a.right)||(this.isRealNode(a.left)&&u(a.left),this.isRealNode(a.right)&&u(a.right))};u(i)}else{let u=[i];for(;u.length>0;){let a=u.pop();if(this.isRealNode(a)){if(o(a)&&(l.push(n(a)),t))return l;this.isRealNode(a.left)&&u.push(a.left),this.isRealNode(a.right)&&u.push(a.right)}}}return l}getNodes(e,t=!1,n=this._root,i=this.iterationType){return this.search(e,t,s=>s,n,i)}getNode(e,t=this._root,n=this.iterationType){return this.search(e,!0,i=>i,t,n)[0]}get(e,t=this._root,n=this.iterationType){var i;if(this._isMapMode){let s=this._extractKey(e);return s==null?void 0:this._store.get(s)}return(i=this.getNode(e,t,n))==null?void 0:i.value}has(e,t=this._root,n=this.iterationType){return this.search(e,!0,i=>i,t,n).length>0}clear(){this._clearNodes(),this._isMapMode&&this._clearValues()}isEmpty(){return this._size===0}isPerfectlyBalanced(e=this._root){return this.getMinHeight(e)+1>=this.getHeight(e)}isBST(e=this._root,t=this.iterationType){let n=this.ensureNode(e);if(!n)return!0;if(t==="RECURSIVE"){let i=(l,u,a)=>{if(!this.isRealNode(l))return!0;let d=Number(l.key);return d<=u||d>=a?!1:i(l.left,u,d)&&i(l.right,d,a)},s=i(n,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER),o=i(n,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);return s||o}else{let i=(l=!1)=>{let u=[],a=l?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,d=n;for(;this.isRealNode(d)||u.length>0;){for(;this.isRealNode(d);)u.push(d),d=d.left;d=u.pop();let p=Number(d.key);if(!this.isRealNode(d)||!l&&a>=p||l&&a<=p)return!1;a=p,d=d.right}return!0},s=i(!1),o=i(!0);return s||o}}getDepth(e,t=this._root){let n=this.ensureNode(e),i=this.ensureNode(t),s=0;for(;n!=null&&n.parent;){if(n===i)return s;s++,n=n.parent}return s}getHeight(e=this._root,t=this.iterationType){if(e=this.ensureNode(e),!this.isRealNode(e))return-1;if(t==="RECURSIVE"){let n=i=>{if(!this.isRealNode(i))return-1;let s=n(i.left),o=n(i.right);return Math.max(s,o)+1};return n(e)}else{let n=[{node:e,depth:0}],i=0;for(;n.length>0;){let{node:s,depth:o}=n.pop();this.isRealNode(s.left)&&n.push({node:s.left,depth:o+1}),this.isRealNode(s.right)&&n.push({node:s.right,depth:o+1}),i=Math.max(i,o)}return i}}getMinHeight(e=this._root,t=this.iterationType){if(e=this.ensureNode(e),!e)return-1;if(t==="RECURSIVE"){let n=i=>{if(!this.isRealNode(i)||!this.isRealNode(i.left)&&!this.isRealNode(i.right))return 0;let s=n(i.left),o=n(i.right);return Math.min(s,o)+1};return n(e)}else{let n=[],i=e,s=null,o=new Map;for(;n.length>0||i;)if(this.isRealNode(i))n.push(i),i=i.left;else if(i=n[n.length-1],!this.isRealNode(i.right)||s===i.right){if(i=n.pop(),this.isRealNode(i)){let l=this.isRealNode(i.left)?o.get(i.left):-1,u=this.isRealNode(i.right)?o.get(i.right):-1;o.set(i,1+Math.min(l,u)),s=i,i=null}}else i=i.right;return o.get(e)}}getPathToRoot(e,t=this._DEFAULT_NODE_CALLBACK,n=!1){let i=[],s=this.ensureNode(e);if(!s)return i;for(;s.parent;)i.push(t(s)),s=s.parent;return i.push(t(s)),n?i.reverse():i}getLeftMost(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){if(this.isNIL(t))return e(void 0);let i=this.ensureNode(t);if(!this.isRealNode(i))return e(void 0);if(n==="RECURSIVE"){let s=o=>{let{left:l}=o;return this.isRealNode(l)?s(l):o};return e(s(i))}else{let s=F(o=>{let{left:l}=o;return this.isRealNode(l)?D(()=>s(l)):o});return e(s(i))}}getRightMost(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){if(this.isNIL(t)||(t=this.ensureNode(t),!t))return e(void 0);if(n==="RECURSIVE"){let i=s=>{let{right:o}=s;return this.isRealNode(o)?i(o):s};return e(i(t))}else{let i=F(s=>{let{right:o}=s;return this.isRealNode(o)?D(()=>i(o)):s});return e(i(t))}}getPredecessor(e){if(this.isRealNode(e.left)){let t=e.left;for(;!this.isRealNode(t)||this.isRealNode(t.right)&&t.right!==e;)this.isRealNode(t)&&(t=t.right);return t}else return e}getSuccessor(e){if(e=this.ensureNode(e),!this.isRealNode(e))return;if(this.isRealNode(e.right))return this.getLeftMost(n=>n,e.right);let t=e.parent;for(;this.isRealNode(t)&&e===t.right;)e=t,t=t.parent;return t}dfs(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=!1,i=this._root,s=this.iterationType,o=!1){return i=this.ensureNode(i),i?this._dfs(e,t,n,i,s,o):[]}bfs(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType,i=!1){if(t=this.ensureNode(t),!t)return[];let s=[];if(n==="RECURSIVE"){let o=new m([t]),l=u=>{if(o.length===0)return;let a=o.shift();s.push(e(a)),i?(a&&this.isRealNodeOrNull(a.left)&&o.push(a.left),a&&this.isRealNodeOrNull(a.right)&&o.push(a.right)):(this.isRealNode(a.left)&&o.push(a.left),this.isRealNode(a.right)&&o.push(a.right)),l(u+1)};l(0)}else{let o=new m([t]);for(;o.length>0;){let l=o.length;for(let u=0;u<l;u++){let a=o.shift();s.push(e(a)),i?(a&&this.isRealNodeOrNull(a.left)&&o.push(a.left),a&&this.isRealNodeOrNull(a.right)&&o.push(a.right)):(this.isRealNode(a.left)&&o.push(a.left),this.isRealNode(a.right)&&o.push(a.right))}}}return s}leaves(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){t=this.ensureNode(t);let i=[];if(!this.isRealNode(t))return[];if(n==="RECURSIVE"){let s=o=>{this.isLeaf(o)&&i.push(e(o)),!(!this.isRealNode(o.left)&&!this.isRealNode(o.right))&&(this.isRealNode(o.left)&&s(o.left),this.isRealNode(o.right)&&s(o.right))};s(t)}else{let s=new m([t]);for(;s.length>0;){let o=s.shift();this.isRealNode(o)&&(this.isLeaf(o)&&i.push(e(o)),this.isRealNode(o.left)&&s.push(o.left),this.isRealNode(o.right)&&s.push(o.right))}}return i}listLevels(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType,i=!1){t=this.ensureNode(t);let s=[];if(!t)return s;if(n==="RECURSIVE"){let o=(l,u)=>{s[u]||(s[u]=[]),s[u].push(e(l)),i?(l&&this.isRealNodeOrNull(l.left)&&o(l.left,u+1),l&&this.isRealNodeOrNull(l.right)&&o(l.right,u+1)):(l&&l.left&&o(l.left,u+1),l&&l.right&&o(l.right,u+1))};o(t,0)}else{let o=[[t,0]];for(;o.length>0;){let l=o.pop(),[u,a]=l;s[a]||(s[a]=[]),s[a].push(e(u)),i?(u&&this.isRealNodeOrNull(u.right)&&o.push([u.right,a+1]),u&&this.isRealNodeOrNull(u.left)&&o.push([u.left,a+1])):(u&&u.right&&o.push([u.right,a+1]),u&&u.left&&o.push([u.left,a+1]))}}return s}morris(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=this._root){if(n=this.ensureNode(n),!n)return[];let i=[],s=n,o=u=>{let a=null,d=null;for(;u;)d=u.right,u.right=a,a=u,u=d;return a},l=u=>{let a=o(u),d=a;for(;d;)i.push(e(d)),d=d.right;o(a)};switch(t){case"IN":for(;s;){if(s.left){let u=this.getPredecessor(s);if(u.right)u.right=null;else{u.right=s,s=s.left;continue}}i.push(e(s)),s=s.right}break;case"PRE":for(;s;){if(s.left){let u=this.getPredecessor(s);if(u.right)u.right=null;else{u.right=s,i.push(e(s)),s=s.left;continue}}else i.push(e(s));s=s.right}break;case"POST":for(;s;){if(s.left){let u=this.getPredecessor(s);if(u.right===null){u.right=s,s=s.left;continue}else u.right=null,l(s.left)}s=s.right}l(n);break}return i}clone(){let e=this._createInstance();return this._clone(e),e}filter(e,t){let n=this._createInstance(),i=0;for(let[s,o]of this)e.call(t,o,s,i++,this)&&n.add([s,o]);return n}map(e,t,n){let i=this._createLike([],t),s=0;for(let[o,l]of this)i.add(e.call(n,l,o,s++,this));return i}toVisual(e=this._root,t){let n={isShowUndefined:!1,isShowNull:!0,isShowRedBlackNIL:!1,...t};e=this.ensureNode(e);let i="";return e&&(n.isShowUndefined&&(i+=`U for undefined
2
2
  `),n.isShowNull&&(i+=`N for null
3
3
  `),n.isShowRedBlackNIL&&(i+=`S for Sentinel Node(NIL)
4
4
  `),(o=>{let[l]=this._displayAux(o,n),u="";for(let a of l)u+=a+`
5
- `;i+=u})(e)),i}print(e,t=this._root){console.log(this.toVisual(t,e))}_dfs(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=!1,i=this._root,s=this.iterationType,o=!1,l=p=>!!p,u=p=>!!p,a=p=>o?this.isRealNodeOrNull(p):this.isRealNode(p),d=p=>this.isRealNodeOrNull(p)){if(i=this.ensureNode(i),!i)return[];let p=[];if(s==="RECURSIVE"){let T=f=>{if(!a(f))return;let V=()=>{l(f)&&(f==null?void 0:f.left)!==void 0&&T(f==null?void 0:f.left)},y=()=>{u(f)&&(f==null?void 0:f.right)!==void 0&&T(f==null?void 0:f.right)};switch(t){case"IN":if(V(),d(f)&&(p.push(e(f)),n))return;y();break;case"PRE":if(d(f)&&(p.push(e(f)),n))return;V(),y();break;case"POST":if(V(),y(),d(f)&&(p.push(e(f)),n))return;break}};T(i)}else{let T=[{opt:0,node:i}],f=K=>{var N;l(K.node)&&T.push({opt:0,node:(N=K.node)==null?void 0:N.left})},V=K=>{var N;u(K.node)&&T.push({opt:0,node:(N=K.node)==null?void 0:N.right})},y=K=>{a(K.node)&&T.push({opt:1,node:K.node})};for(;T.length>0;){let K=T.pop();if(K!==void 0&&a(K.node))if(K.opt===1){if(d(K.node)&&K.node!==void 0&&(p.push(e(K.node)),n))return p}else switch(t){case"IN":V(K),y(K),f(K);break;case"PRE":V(K),f(K),y(K);break;case"POST":y(K),V(K),f(K);break}}}return p}*_getIterator(e=this._root){if(e)if(this.iterationType==="ITERATIVE"){let t=[],n=e;for(;n||t.length>0;){for(;this.isRealNode(n);)t.push(n),n=n.left;n=t.pop(),this.isRealNode(n)&&(this._isMapMode?yield[n.key,this._store.get(n.key)]:yield[n.key,n.value],n=n.right)}}else e.left&&this.isRealNode(e)&&(yield*this[Symbol.iterator](e.left)),this._isMapMode?yield[e.key,this._store.get(e.key)]:yield[e.key,e.value],e.right&&this.isRealNode(e)&&(yield*this[Symbol.iterator](e.right))}_snapshotOptions(){return{iterationType:this.iterationType,toEntryFn:this.toEntryFn,isMapMode:this.isMapMode,isDuplicate:this.isDuplicate}}_createInstance(e){let t=this.constructor;return new t([],{...this._snapshotOptions(),...e!=null?e:{}})}_createLike(e=[],t){let n=this.constructor;return new n(e,{...this._snapshotOptions(),...t!=null?t:{}})}_keyValueNodeOrEntryToNodeAndValue(e,t){if(e===void 0)return[void 0,void 0];if(e===null)return[null,void 0];if(this.isNode(e))return[e,t];if(this.isEntry(e)){let[n,i]=e;if(n===void 0)return[void 0,void 0];if(n===null)return[null,void 0];let s=t!=null?t:i;return[this.createNode(n,s),s]}return[this.createNode(e,t),t]}_clone(e){this.bfs(t=>{t===null?e.add(null):this._isMapMode?e.add([t.key,this._store.get(t.key)]):e.add([t.key,t.value])},this._root,this.iterationType,!0),this._isMapMode&&(e._store=this._store)}_displayAux(e,t){let{isShowNull:n,isShowUndefined:i,isShowRedBlackNIL:s}=t,o=[["\u2500"],1,0,0];if(e===null&&!n)return o;if(e===void 0&&!i)return o;if(this.isNIL(e)&&!s)return o;if(e!=null){let u=e.key,a=this.isNIL(e)?"S":String(u),d=a.length;return l(a,d,this._displayAux(e.left,t),this._displayAux(e.right,t))}else{let u=e===void 0?"U":"N",a=u.length;return l(u,a,[[""],1,0,0],[[""],1,0,0])}function l(u,a,d,p){let[T,f,V,y]=d,[K,N,R,b]=p,M=" ".repeat(Math.max(0,y+1))+"_".repeat(Math.max(0,f-y-1))+u+"_".repeat(Math.max(0,b))+" ".repeat(Math.max(0,N-b)),v=(V>0?" ".repeat(y)+"/"+" ".repeat(f-y-1):" ".repeat(f))+" ".repeat(a)+(R>0?" ".repeat(b)+"\\"+" ".repeat(N-b-1):" ".repeat(N)),U=[M,v];for(let B=0;B<Math.max(V,R);B++){let z=B<V?T[B]:" ".repeat(f),Q=B<R?K[B]:" ".repeat(N);U.push(z+" ".repeat(a)+Q)}return[U,f+a+N,Math.max(V,R)+2,f+Math.floor(a/2)]}}_swapProperties(e,t){if(e=this.ensureNode(e),t=this.ensureNode(t),e&&t){let{key:n,value:i}=t,s=this.createNode(n,i);return s&&(t.key=e.key,this._isMapMode||(t.value=e.value),e.key=s.key,this._isMapMode||(e.value=s.value)),t}}_replaceNode(e,t){return e.parent&&(e.parent.left===e?e.parent.left=t:e.parent.right===e&&(e.parent.right=t)),t.left=e.left,t.right=e.right,t.parent=e.parent,this._root===e&&this._setRoot(t),t}_setRoot(e){e&&(e.parent=void 0),this._root=e}_ensurePredicate(e){if(e==null)return t=>!1;if(this._isPredicate(e))return e;if(this.isRealNode(e))return t=>t===e;if(this.isEntry(e)){let[t]=e;return n=>n?n.key===t:!1}return t=>t?t.key===e:!1}_isPredicate(e){return typeof e=="function"}_extractKey(e){if(e===null)return null;if(e!==void 0&&e!==this._NIL)return this.isNode(e)?e.key:this.isEntry(e)?e[0]:e}_setValue(e,t){return e==null||t===void 0?!1:this._store.set(e,t)}_clearNodes(){this._setRoot(void 0),this._size=0}_clearValues(){this._store.clear()}};var L=class{constructor(r,e){c(this,"key");c(this,"value");c(this,"parent");c(this,"_left");c(this,"_right");c(this,"_height",0);c(this,"_color","BLACK");c(this,"_count",1);this.key=r,this.value=e}get left(){return this._left}set left(r){r&&(r.parent=this),this._left=r}get right(){return this._right}set right(r){r&&(r.parent=this),this._right=r}get height(){return this._height}set height(r){this._height=r}get color(){return this._color}set color(r){this._color=r}get count(){return this._count}set count(r){this._count=r}get familyPosition(){return this.parent?this.parent.left===this?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===this?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},I=class extends C{constructor(e=[],t){super([],t);c(this,"_root");c(this,"_isReverse",!1);c(this,"_comparator",(e,t)=>{if(g(e)&&g(t))return e>t?1:e<t?-1:0;if(this._specifyComparable){let n=this._specifyComparable(e),i=this._specifyComparable(t);return n>i?1:n<i?-1:0}if(typeof e=="object"||typeof t=="object")throw TypeError("When comparing object types, a custom specifyComparable must be defined in the constructor's options.");return 0});c(this,"_specifyComparable");if(t){let{specifyComparable:n,isReverse:i}=t;typeof n=="function"&&(this._specifyComparable=n),i!==void 0&&(this._isReverse=i)}e&&this.addMany(e)}get root(){return this._root}get isReverse(){return this._isReverse}get comparator(){return this._comparator}get specifyComparable(){return this._specifyComparable}createNode(e,t){return new L(e,this._isMapMode?void 0:t)}ensureNode(e,t=this.iterationType){var n;return(n=super.ensureNode(e,t))!=null?n:void 0}isNode(e){return e instanceof L}isValidKey(e){return g(e,this._specifyComparable!==void 0)}dfs(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=!1,i=this._root,s=this.iterationType){return super.dfs(e,t,n,i,s)}bfs(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){return super.bfs(e,t,n,!1)}listLevels(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){return super.listLevels(e,t,n,!1)}getNode(e,t=this._root,n=this.iterationType){var i;return(i=this.getNodes(e,!0,t,n)[0])!=null?i:void 0}search(e,t=!1,n=this._DEFAULT_NODE_CALLBACK,i=this._root,s=this.iterationType){if(e===void 0)return[];if(e===null)return[];if(i=this.ensureNode(i),!i)return[];let o,l=this.isRange(e);l?o=d=>d?e.isInRange(d.key,this._comparator):!1:o=this._ensurePredicate(e);let u=d=>{if(!d||!this.isRealNode(d.left))return!1;if(l){let p=e,T=this.isReverse?p.high:p.low,f=this.isReverse?p.includeHigh:p.includeLow;return f&&this._compare(d.key,T)>=0||!f&&this._compare(d.key,T)>0}if(!l&&!this._isPredicate(e)){let p=this._extractKey(e);return p!=null&&this._compare(d.key,p)>0}return!0},a=d=>{if(!d||!this.isRealNode(d.right))return!1;if(l){let p=e,T=this.isReverse?p.low:p.high,f=this.isReverse?p.includeLow:p.includeHigh;return f&&this._compare(d.key,T)<=0||!f&&this._compare(d.key,T)<0}if(!l&&!this._isPredicate(e)){let p=this._extractKey(e);return p!=null&&this._compare(d.key,p)<0}return!0};return super._dfs(n,"IN",t,i,s,!1,u,a,()=>!0,d=>!!d&&o(d))}rangeSearch(e,t=this._DEFAULT_NODE_CALLBACK,n=this._root,i=this.iterationType){let s=e instanceof _?e:new _(e[0],e[1]);return this.search(s,!1,t,n,i)}add(e,t){let[n,i]=this._keyValueNodeOrEntryToNodeAndValue(e,t);if(n===void 0)return!1;if(this._root===void 0)return this._setRoot(n),this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0;let s=this._root;for(;s!==void 0;){if(this._compare(s.key,n.key)===0)return this._replaceNode(s,n),this._isMapMode&&this._setValue(s.key,i),!0;if(this._compare(s.key,n.key)>0){if(s.left===void 0)return s.left=n,this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0;s.left!==null&&(s=s.left)}else{if(s.right===void 0)return s.right=n,this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0;s.right!==null&&(s=s.right)}}return!1}addMany(e,t,n=!0,i=this.iterationType){let s=[],o=t==null?void 0:t[Symbol.iterator]();if(!n){for(let T of e){let f=o==null?void 0:o.next().value;this.isRaw(T)&&(T=this._toEntryFn(T)),s.push(this.add(T,f))}return s}let l=[],u=0;for(let T of e)l.push({key:T,value:o==null?void 0:o.next().value,orgIndex:u++});let a=l.sort(({key:T},{key:f})=>{let V,y;return this.isRaw(T)?V=this._toEntryFn(T)[0]:this.isEntry(T)?V=T[0]:this.isRealNode(T)?V=T.key:V=T,this.isRaw(f)?y=this._toEntryFn(f)[0]:this.isEntry(f)?y=f[0]:this.isRealNode(f)?y=f.key:y=f,V!=null&&y!=null?this._compare(V,y):0}),d=T=>{if(T.length===0)return;let f=Math.floor((T.length-1)/2),{key:V,value:y,orgIndex:K}=T[f];if(this.isRaw(V)){let N=this._toEntryFn(V);s[K]=this.add(N)}else s[K]=this.add(V,y);d(T.slice(0,f)),d(T.slice(f+1))};return i==="RECURSIVE"?d(a):(()=>{let f=[[0,a.length-1]];for(;f.length>0;){let V=f.pop();if(!V)continue;let[y,K]=V;if(y>K)continue;let N=y+Math.floor((K-y)/2),{key:R,value:b,orgIndex:M}=a[N];if(this.isRaw(R)){let v=this._toEntryFn(R);s[M]=this.add(v)}else s[M]=this.add(R,b);f.push([N+1,K]),f.push([y,N-1])}})(),s}lesserOrGreaterTraverse(e=this._DEFAULT_NODE_CALLBACK,t=-1,n=this._root,i=this.iterationType){let s=this.ensureNode(n),o=[];if(!this._root||!s)return o;let l=s.key;if(i==="RECURSIVE"){let u=a=>{let d=this._compare(a.key,l);Math.sign(d)==t&&o.push(e(a)),this.isRealNode(a.left)&&u(a.left),this.isRealNode(a.right)&&u(a.right)};return u(this._root),o}else{let u=new m([this._root]);for(;u.length>0;){let a=u.shift();if(this.isRealNode(a)){let d=this._compare(a.key,l);Math.sign(d)==t&&o.push(e(a)),this.isRealNode(a.left)&&u.push(a.left),this.isRealNode(a.right)&&u.push(a.right)}}return o}}perfectlyBalance(e=this.iterationType){let t=this.dfs(o=>o,"IN",!1,this._root,e),n=t.length;if(this._clearNodes(),n===0)return!1;let i=(o,l,u)=>{if(o>l)return;let a=o+(l-o>>1),d=t[a],p=i(o,a-1,d),T=i(a+1,l,d);return d.left=p,d.right=T,d.parent=u,d},s=i(0,n-1,void 0);return this._setRoot(s),this._size=n,!0}isAVLBalanced(e=this.iterationType){if(!this._root)return!0;let t=!0;if(e==="RECURSIVE"){let n=i=>{if(!i)return 0;let s=n(i.left),o=n(i.right);return Math.abs(s-o)>1&&(t=!1),Math.max(s,o)+1};n(this._root)}else{let n=[],i=this._root,s,o=new Map;for(;n.length>0||i;)if(i)n.push(i),i.left!==null&&(i=i.left);else if(i=n[n.length-1],!i.right||s===i.right){if(i=n.pop(),i){let l=i.left?o.get(i.left):-1,u=i.right?o.get(i.right):-1;if(Math.abs(l-u)>1)return!1;o.set(i,1+Math.max(l,u)),s=i,i=void 0}}else i=i.right}return t}map(e,t,n){let i=this._createLike([],t),s=0;for(let[o,l]of this)i.add(e.call(n,o,l,s++,this));return i}deleteWhere(e){let t=[],n=this._root,i=0;for(;t.length>0||n!==void 0;){for(;n!=null;)t.push(n),n=n.left;let s=t.pop();if(!s)break;let o=s.key,l=s.value;if(e(o,l,i++,this))return this._deleteByKey(o);n=s.right}return!1}_createInstance(e){let t=this.constructor;return new t([],{...this._snapshotOptions(),...e!=null?e:{}})}_createLike(e=[],t){let n=this.constructor;return new n(e,{...this._snapshotOptions(),...t!=null?t:{}})}_snapshotOptions(){return{...super._snapshotOptions(),specifyComparable:this.specifyComparable,isReverse:this.isReverse}}_keyValueNodeOrEntryToNodeAndValue(e,t){let[n,i]=super._keyValueNodeOrEntryToNodeAndValue(e,t);return n===null?[void 0,void 0]:[n,t!=null?t:i]}_setRoot(e){e&&(e.parent=void 0),this._root=e}_compare(e,t){return this._isReverse?-this._comparator(e,t):this._comparator(e,t)}_deleteByKey(e){var s;let t=this._root;for(;t;){let o=this._compare(t.key,e);if(o===0)break;t=o>0?t.left:t.right}if(!t)return!1;let n=(o,l)=>{let u=o==null?void 0:o.parent;u?u.left===o?u.left=l:u.right=l:this._setRoot(l),l&&(l.parent=u)},i=o=>{if(o){for(;o.left!==void 0&&o.left!==null;)o=o.left;return o}};if(t.left===void 0)n(t,t.right);else if(t.right===void 0)n(t,t.left);else{let o=i(t.right);o.parent!==t&&(n(o,o.right),o.right=t.right,o.right&&(o.right.parent=o)),n(t,o),o.left=t.left,o.left&&(o.left.parent=o)}return this._size=Math.max(0,((s=this._size)!=null?s:0)-1),!0}};var k=class{constructor(r,e){c(this,"key");c(this,"value");c(this,"parent");c(this,"_left");c(this,"_right");c(this,"_height",0);c(this,"_color","BLACK");c(this,"_count",1);this.key=r,this.value=e}get left(){return this._left}set left(r){r&&(r.parent=this),this._left=r}get right(){return this._right}set right(r){r&&(r.parent=this),this._right=r}get height(){return this._height}set height(r){this._height=r}get color(){return this._color}set color(r){this._color=r}get count(){return this._count}set count(r){this._count=r}get familyPosition(){return this.parent?this.parent.left===this?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===this?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},P=class extends I{constructor(r=[],e){super([],e),r&&super.addMany(r)}createNode(r,e){return new k(r,this._isMapMode?void 0:e)}isNode(r){return r instanceof k}add(r,e){if(r===null)return!1;let t=super.add(r,e);return t&&this._balancePath(r),t}delete(r){let e=super.delete(r);for(let{needBalanced:t}of e)t&&this._balancePath(t);return e}perfectlyBalance(r=this.iterationType){let e=this.dfs(s=>s,"IN",!1,this._root,r),t=e.length;if(t===0)return!1;this._clearNodes();let n=(s,o,l)=>{if(s>o)return;let u=s+(o-s>>1),a=e[u];a.left=n(s,u-1,a),a.right=n(u+1,o,a),a.parent=l;let d=a.left?a.left.height:-1,p=a.right?a.right.height:-1;return a.height=Math.max(d,p)+1,a},i=n(0,t-1,void 0);return this._setRoot(i),this._size=t,!0}map(r,e,t){let n=this._createLike([],e),i=0;for(let[s,o]of this)n.add(r.call(t,s,o,i++,this));return n}_createInstance(r){let e=this.constructor;return new e([],{...this._snapshotOptions(),...r!=null?r:{}})}_createLike(r=[],e){let t=this.constructor;return new t(r,{...this._snapshotOptions(),...e!=null?e:{}})}_swapProperties(r,e){let t=this.ensureNode(r),n=this.ensureNode(e);if(t&&n){let{key:i,value:s,height:o}=n,l=this.createNode(i,s);return l&&(l.height=o,n.key=t.key,this._isMapMode||(n.value=t.value),n.height=t.height,t.key=l.key,this._isMapMode||(t.value=l.value),t.height=l.height),n}}_balanceFactor(r){let e=r.left?r.left.height:-1;return(r.right?r.right.height:-1)-e}_updateHeight(r){let e=r.left?r.left.height:-1,t=r.right?r.right.height:-1;r.height=1+Math.max(e,t)}_balanceLL(r){let e=r.parent,t=r.left;t!==null&&(r.parent=t),t&&t.right&&(t.right.parent=r),t&&(t.parent=e),r===this.root?t&&this._setRoot(t):(e==null?void 0:e.left)===r?e.left=t:e&&(e.right=t),t&&(r.left=t.right,t.right=r),this._updateHeight(r),t&&this._updateHeight(t)}_balanceLR(r){let e=r.parent,t=r.left,n;t&&(n=t.right),r&&n!==null&&(r.parent=n),t&&n!==null&&(t.parent=n),n&&(n.left&&t!==null&&(n.left.parent=t),n.right&&(n.right.parent=r),n.parent=e),r===this.root?n&&this._setRoot(n):e&&(e.left===r?e.left=n:e.right=n),n&&(r.left=n.right,t&&(t.right=n.left),n.left=t,n.right=r),this._updateHeight(r),t&&this._updateHeight(t),n&&this._updateHeight(n)}_balanceRR(r){let e=r.parent,t=r.right;t!==null&&(r.parent=t),t&&(t.left&&(t.left.parent=r),t.parent=e),r===this.root?t&&this._setRoot(t):e&&(e.left===r?e.left=t:e.right=t),t&&(r.right=t.left,t.left=r),this._updateHeight(r),t&&this._updateHeight(t)}_balanceRL(r){let e=r.parent,t=r.right,n;t&&(n=t.left),n!==null&&(r.parent=n),t&&n!==null&&(t.parent=n),n&&(n.left&&(n.left.parent=r),n.right&&t!==null&&(n.right.parent=t),n.parent=e),r===this.root?n&&this._setRoot(n):e&&(e.left===r?e.left=n:e.right=n),n&&(r.right=n.left),t&&n&&(t.left=n.right),n&&(n.left=r),n&&(n.right=t),this._updateHeight(r),t&&this._updateHeight(t),n&&this._updateHeight(n)}_balancePath(r){r=this.ensureNode(r);let e=this.getPathToRoot(r,t=>t,!1);for(let t=0;t<e.length;t++){let n=e[t];if(n)switch(this._updateHeight(n),this._balanceFactor(n)){case-2:n&&n.left&&(this._balanceFactor(n.left)<=0?this._balanceLL(n):this._balanceLR(n));break;case 2:n&&n.right&&(this._balanceFactor(n.right)>=0?this._balanceRR(n):this._balanceRL(n))}}}_replaceNode(r,e){return e.height=r.height,super._replaceNode(r,e)}};return Y(ee);})();
5
+ `;i+=u})(e)),i}print(e,t=this._root){console.log(this.toVisual(t,e))}_dfs(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=!1,i=this._root,s=this.iterationType,o=!1,l=p=>!!p,u=p=>!!p,a=p=>o?this.isRealNodeOrNull(p):this.isRealNode(p),d=p=>this.isRealNodeOrNull(p)){if(i=this.ensureNode(i),!i)return[];let p=[];if(s==="RECURSIVE"){let T=f=>{if(!a(f))return;let V=()=>{l(f)&&(f==null?void 0:f.left)!==void 0&&T(f==null?void 0:f.left)},y=()=>{u(f)&&(f==null?void 0:f.right)!==void 0&&T(f==null?void 0:f.right)};switch(t){case"IN":if(V(),d(f)&&(p.push(e(f)),n))return;y();break;case"PRE":if(d(f)&&(p.push(e(f)),n))return;V(),y();break;case"POST":if(V(),y(),d(f)&&(p.push(e(f)),n))return;break}};T(i)}else{let T=[{opt:0,node:i}],f=K=>{var N;l(K.node)&&T.push({opt:0,node:(N=K.node)==null?void 0:N.left})},V=K=>{var N;u(K.node)&&T.push({opt:0,node:(N=K.node)==null?void 0:N.right})},y=K=>{a(K.node)&&T.push({opt:1,node:K.node})};for(;T.length>0;){let K=T.pop();if(K!==void 0&&a(K.node))if(K.opt===1){if(d(K.node)&&K.node!==void 0&&(p.push(e(K.node)),n))return p}else switch(t){case"IN":V(K),y(K),f(K);break;case"PRE":V(K),f(K),y(K);break;case"POST":y(K),V(K),f(K);break}}}return p}*_getIterator(e=this._root){if(e)if(this.iterationType==="ITERATIVE"){let t=[],n=e;for(;n||t.length>0;){for(;this.isRealNode(n);)t.push(n),n=n.left;n=t.pop(),this.isRealNode(n)&&(this._isMapMode?yield[n.key,this._store.get(n.key)]:yield[n.key,n.value],n=n.right)}}else e.left&&this.isRealNode(e)&&(yield*this[Symbol.iterator](e.left)),this._isMapMode?yield[e.key,this._store.get(e.key)]:yield[e.key,e.value],e.right&&this.isRealNode(e)&&(yield*this[Symbol.iterator](e.right))}_snapshotOptions(){return{iterationType:this.iterationType,toEntryFn:this.toEntryFn,isMapMode:this.isMapMode,isDuplicate:this.isDuplicate}}_createInstance(e){let t=this.constructor;return new t([],{...this._snapshotOptions(),...e!=null?e:{}})}_createLike(e=[],t){let n=this.constructor;return new n(e,{...this._snapshotOptions(),...t!=null?t:{}})}_keyValueNodeOrEntryToNodeAndValue(e,t){if(e===void 0)return[void 0,void 0];if(e===null)return[null,void 0];if(this.isNode(e))return[e,t];if(this.isEntry(e)){let[n,i]=e;if(n===void 0)return[void 0,void 0];if(n===null)return[null,void 0];let s=t!=null?t:i;return[this.createNode(n,s),s]}return[this.createNode(e,t),t]}_clone(e){this.bfs(t=>{t===null?e.add(null):this._isMapMode?e.add([t.key,this._store.get(t.key)]):e.add([t.key,t.value])},this._root,this.iterationType,!0),this._isMapMode&&(e._store=this._store)}_displayAux(e,t){let{isShowNull:n,isShowUndefined:i,isShowRedBlackNIL:s}=t,o=[["\u2500"],1,0,0];if(e===null&&!n)return o;if(e===void 0&&!i)return o;if(this.isNIL(e)&&!s)return o;if(e!=null){let u=e.key,a=this.isNIL(e)?"S":String(u),d=a.length;return l(a,d,this._displayAux(e.left,t),this._displayAux(e.right,t))}else{let u=e===void 0?"U":"N",a=u.length;return l(u,a,[[""],1,0,0],[[""],1,0,0])}function l(u,a,d,p){let[T,f,V,y]=d,[K,N,R,b]=p,M=" ".repeat(Math.max(0,y+1))+"_".repeat(Math.max(0,f-y-1))+u+"_".repeat(Math.max(0,b))+" ".repeat(Math.max(0,N-b)),v=(V>0?" ".repeat(y)+"/"+" ".repeat(f-y-1):" ".repeat(f))+" ".repeat(a)+(R>0?" ".repeat(b)+"\\"+" ".repeat(N-b-1):" ".repeat(N)),U=[M,v];for(let B=0;B<Math.max(V,R);B++){let z=B<V?T[B]:" ".repeat(f),Q=B<R?K[B]:" ".repeat(N);U.push(z+" ".repeat(a)+Q)}return[U,f+a+N,Math.max(V,R)+2,f+Math.floor(a/2)]}}_swapProperties(e,t){if(e=this.ensureNode(e),t=this.ensureNode(t),e&&t){let{key:n,value:i}=t,s=this.createNode(n,i);return s&&(t.key=e.key,this._isMapMode||(t.value=e.value),e.key=s.key,this._isMapMode||(e.value=s.value)),t}}_replaceNode(e,t){return e.parent&&(e.parent.left===e?e.parent.left=t:e.parent.right===e&&(e.parent.right=t)),t.left=e.left,t.right=e.right,t.parent=e.parent,this._root===e&&this._setRoot(t),t}_setRoot(e){e&&(e.parent=void 0),this._root=e}_ensurePredicate(e){if(e==null)return t=>!1;if(this._isPredicate(e))return e;if(this.isRealNode(e))return t=>t===e;if(this.isEntry(e)){let[t]=e;return n=>n?n.key===t:!1}return t=>t?t.key===e:!1}_isPredicate(e){return typeof e=="function"}_extractKey(e){if(e===null)return null;if(e!==void 0&&e!==this._NIL)return this.isNode(e)?e.key:this.isEntry(e)?e[0]:e}_setValue(e,t){return e==null||t===void 0?!1:this._store.set(e,t)}_clearNodes(){this._setRoot(void 0),this._size=0}_clearValues(){this._store.clear()}};var L=class{constructor(r,e){c(this,"key");c(this,"value");c(this,"parent");c(this,"_left");c(this,"_right");c(this,"_height",0);c(this,"_color","BLACK");c(this,"_count",1);this.key=r,this.value=e}get left(){return this._left}set left(r){r&&(r.parent=this),this._left=r}get right(){return this._right}set right(r){r&&(r.parent=this),this._right=r}get height(){return this._height}set height(r){this._height=r}get color(){return this._color}set color(r){this._color=r}get count(){return this._count}set count(r){this._count=r}get familyPosition(){return this.parent?this.parent.left===this?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===this?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},I=class extends C{constructor(e=[],t){super([],t);c(this,"_root");c(this,"_isReverse",!1);c(this,"_comparator",(e,t)=>{if(g(e)&&g(t))return e>t?1:e<t?-1:0;if(this._specifyComparable){let n=this._specifyComparable(e),i=this._specifyComparable(t);return n>i?1:n<i?-1:0}if(typeof e=="object"||typeof t=="object")throw TypeError("When comparing object types, a custom specifyComparable must be defined in the constructor's options.");return 0});c(this,"_specifyComparable");if(t){let{specifyComparable:n,isReverse:i}=t;typeof n=="function"&&(this._specifyComparable=n),i!==void 0&&(this._isReverse=i)}e&&this.addMany(e)}get root(){return this._root}get isReverse(){return this._isReverse}get comparator(){return this._comparator}get specifyComparable(){return this._specifyComparable}createNode(e,t){return new L(e,this._isMapMode?void 0:t)}ensureNode(e,t=this.iterationType){var n;return(n=super.ensureNode(e,t))!=null?n:void 0}isNode(e){return e instanceof L}isValidKey(e){return g(e,this._specifyComparable!==void 0)}dfs(e=this._DEFAULT_NODE_CALLBACK,t="IN",n=!1,i=this._root,s=this.iterationType){return super.dfs(e,t,n,i,s)}bfs(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){return super.bfs(e,t,n,!1)}listLevels(e=this._DEFAULT_NODE_CALLBACK,t=this._root,n=this.iterationType){return super.listLevels(e,t,n,!1)}getNode(e,t=this._root,n=this.iterationType){var i;return(i=this.getNodes(e,!0,t,n)[0])!=null?i:void 0}search(e,t=!1,n=this._DEFAULT_NODE_CALLBACK,i=this._root,s=this.iterationType){if(e===void 0)return[];if(e===null)return[];if(i=this.ensureNode(i),!i)return[];let o,l=this.isRange(e);l?o=d=>d?e.isInRange(d.key,this._comparator):!1:o=this._ensurePredicate(e);let u=d=>{if(!d||!this.isRealNode(d.left))return!1;if(l){let p=e,T=this.isReverse?p.high:p.low,f=this.isReverse?p.includeHigh:p.includeLow;return f&&this._compare(d.key,T)>=0||!f&&this._compare(d.key,T)>0}if(!l&&!this._isPredicate(e)){let p=this._extractKey(e);return p!=null&&this._compare(d.key,p)>0}return!0},a=d=>{if(!d||!this.isRealNode(d.right))return!1;if(l){let p=e,T=this.isReverse?p.low:p.high,f=this.isReverse?p.includeLow:p.includeHigh;return f&&this._compare(d.key,T)<=0||!f&&this._compare(d.key,T)<0}if(!l&&!this._isPredicate(e)){let p=this._extractKey(e);return p!=null&&this._compare(d.key,p)<0}return!0};return super._dfs(n,"IN",t,i,s,!1,u,a,()=>!0,d=>!!d&&o(d))}rangeSearch(e,t=this._DEFAULT_NODE_CALLBACK,n=this._root,i=this.iterationType){let s=e instanceof _?e:new _(e[0],e[1]);return this.search(s,!1,t,n,i)}add(e,t){let[n,i]=this._keyValueNodeOrEntryToNodeAndValue(e,t);if(n===void 0)return!1;if(this._root===void 0)return this._setRoot(n),this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0;let s=this._root;for(;s!==void 0;){if(this._compare(s.key,n.key)===0)return this._replaceNode(s,n),this._isMapMode&&this._setValue(s.key,i),!0;if(this._compare(s.key,n.key)>0){if(s.left===void 0)return s.left=n,this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0;s.left!==null&&(s=s.left)}else{if(s.right===void 0)return s.right=n,this._isMapMode&&this._setValue(n==null?void 0:n.key,i),this._size++,!0;s.right!==null&&(s=s.right)}}return!1}addMany(e,t,n=!0,i=this.iterationType){let s=[],o=t==null?void 0:t[Symbol.iterator]();if(!n){for(let T of e){let f=o==null?void 0:o.next().value;this.isRaw(T)&&(T=this._toEntryFn(T)),s.push(this.add(T,f))}return s}let l=[],u=0;for(let T of e)l.push({key:T,value:o==null?void 0:o.next().value,orgIndex:u++});let a=l.sort(({key:T},{key:f})=>{let V,y;return this.isRaw(T)?V=this._toEntryFn(T)[0]:this.isEntry(T)?V=T[0]:this.isRealNode(T)?V=T.key:V=T,this.isRaw(f)?y=this._toEntryFn(f)[0]:this.isEntry(f)?y=f[0]:this.isRealNode(f)?y=f.key:y=f,V!=null&&y!=null?this._compare(V,y):0}),d=T=>{if(T.length===0)return;let f=Math.floor((T.length-1)/2),{key:V,value:y,orgIndex:K}=T[f];if(this.isRaw(V)){let N=this._toEntryFn(V);s[K]=this.add(N)}else s[K]=this.add(V,y);d(T.slice(0,f)),d(T.slice(f+1))};return i==="RECURSIVE"?d(a):(()=>{let f=[[0,a.length-1]];for(;f.length>0;){let V=f.pop();if(!V)continue;let[y,K]=V;if(y>K)continue;let N=y+Math.floor((K-y)/2),{key:R,value:b,orgIndex:M}=a[N];if(this.isRaw(R)){let v=this._toEntryFn(R);s[M]=this.add(v)}else s[M]=this.add(R,b);f.push([N+1,K]),f.push([y,N-1])}})(),s}lesserOrGreaterTraverse(e=this._DEFAULT_NODE_CALLBACK,t=-1,n=this._root,i=this.iterationType){let s=this.ensureNode(n),o=[];if(!this._root||!s)return o;let l=s.key;if(i==="RECURSIVE"){let u=a=>{let d=this._compare(a.key,l);Math.sign(d)==t&&o.push(e(a)),this.isRealNode(a.left)&&u(a.left),this.isRealNode(a.right)&&u(a.right)};return u(this._root),o}else{let u=new m([this._root]);for(;u.length>0;){let a=u.shift();if(this.isRealNode(a)){let d=this._compare(a.key,l);Math.sign(d)==t&&o.push(e(a)),this.isRealNode(a.left)&&u.push(a.left),this.isRealNode(a.right)&&u.push(a.right)}}return o}}perfectlyBalance(e=this.iterationType){let t=this.dfs(o=>o,"IN",!1,this._root,e),n=t.length;if(this._clearNodes(),n===0)return!1;let i=(o,l,u)=>{if(o>l)return;let a=o+(l-o>>1),d=t[a],p=i(o,a-1,d),T=i(a+1,l,d);return d.left=p,d.right=T,d.parent=u,d},s=i(0,n-1,void 0);return this._setRoot(s),this._size=n,!0}isAVLBalanced(e=this.iterationType){if(!this._root)return!0;let t=!0;if(e==="RECURSIVE"){let n=i=>{if(!i)return 0;let s=n(i.left),o=n(i.right);return Math.abs(s-o)>1&&(t=!1),Math.max(s,o)+1};n(this._root)}else{let n=[],i=this._root,s,o=new Map;for(;n.length>0||i;)if(i)n.push(i),i.left!==null&&(i=i.left);else if(i=n[n.length-1],!i.right||s===i.right){if(i=n.pop(),i){let l=i.left?o.get(i.left):-1,u=i.right?o.get(i.right):-1;if(Math.abs(l-u)>1)return!1;o.set(i,1+Math.max(l,u)),s=i,i=void 0}}else i=i.right}return t}map(e,t,n){let i=this._createLike([],t),s=0;for(let[o,l]of this)i.add(e.call(n,l,o,s++,this));return i}deleteWhere(e){let t=[],n=this._root,i=0;for(;t.length>0||n!==void 0;){for(;n!=null;)t.push(n),n=n.left;let s=t.pop();if(!s)break;let o=s.key,l=s.value;if(e(o,l,i++,this))return this._deleteByKey(o);n=s.right}return!1}_createInstance(e){let t=this.constructor;return new t([],{...this._snapshotOptions(),...e!=null?e:{}})}_createLike(e=[],t){let n=this.constructor;return new n(e,{...this._snapshotOptions(),...t!=null?t:{}})}_snapshotOptions(){return{...super._snapshotOptions(),specifyComparable:this.specifyComparable,isReverse:this.isReverse}}_keyValueNodeOrEntryToNodeAndValue(e,t){let[n,i]=super._keyValueNodeOrEntryToNodeAndValue(e,t);return n===null?[void 0,void 0]:[n,t!=null?t:i]}_setRoot(e){e&&(e.parent=void 0),this._root=e}_compare(e,t){return this._isReverse?-this._comparator(e,t):this._comparator(e,t)}_deleteByKey(e){var s;let t=this._root;for(;t;){let o=this._compare(t.key,e);if(o===0)break;t=o>0?t.left:t.right}if(!t)return!1;let n=(o,l)=>{let u=o==null?void 0:o.parent;u?u.left===o?u.left=l:u.right=l:this._setRoot(l),l&&(l.parent=u)},i=o=>{if(o){for(;o.left!==void 0&&o.left!==null;)o=o.left;return o}};if(t.left===void 0)n(t,t.right);else if(t.right===void 0)n(t,t.left);else{let o=i(t.right);o.parent!==t&&(n(o,o.right),o.right=t.right,o.right&&(o.right.parent=o)),n(t,o),o.left=t.left,o.left&&(o.left.parent=o)}return this._size=Math.max(0,((s=this._size)!=null?s:0)-1),!0}};var k=class{constructor(r,e){c(this,"key");c(this,"value");c(this,"parent");c(this,"_left");c(this,"_right");c(this,"_height",0);c(this,"_color","BLACK");c(this,"_count",1);this.key=r,this.value=e}get left(){return this._left}set left(r){r&&(r.parent=this),this._left=r}get right(){return this._right}set right(r){r&&(r.parent=this),this._right=r}get height(){return this._height}set height(r){this._height=r}get color(){return this._color}set color(r){this._color=r}get count(){return this._count}set count(r){this._count=r}get familyPosition(){return this.parent?this.parent.left===this?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===this?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},P=class extends I{constructor(r=[],e){super([],e),r&&super.addMany(r)}createNode(r,e){return new k(r,this._isMapMode?void 0:e)}isNode(r){return r instanceof k}add(r,e){if(r===null)return!1;let t=super.add(r,e);return t&&this._balancePath(r),t}delete(r){let e=super.delete(r);for(let{needBalanced:t}of e)t&&this._balancePath(t);return e}perfectlyBalance(r=this.iterationType){let e=this.dfs(s=>s,"IN",!1,this._root,r),t=e.length;if(t===0)return!1;this._clearNodes();let n=(s,o,l)=>{if(s>o)return;let u=s+(o-s>>1),a=e[u];a.left=n(s,u-1,a),a.right=n(u+1,o,a),a.parent=l;let d=a.left?a.left.height:-1,p=a.right?a.right.height:-1;return a.height=Math.max(d,p)+1,a},i=n(0,t-1,void 0);return this._setRoot(i),this._size=t,!0}map(r,e,t){let n=this._createLike([],e),i=0;for(let[s,o]of this)n.add(r.call(t,o,s,i++,this));return n}_createInstance(r){let e=this.constructor;return new e([],{...this._snapshotOptions(),...r!=null?r:{}})}_createLike(r=[],e){let t=this.constructor;return new t(r,{...this._snapshotOptions(),...e!=null?e:{}})}_swapProperties(r,e){let t=this.ensureNode(r),n=this.ensureNode(e);if(t&&n){let{key:i,value:s,height:o}=n,l=this.createNode(i,s);return l&&(l.height=o,n.key=t.key,this._isMapMode||(n.value=t.value),n.height=t.height,t.key=l.key,this._isMapMode||(t.value=l.value),t.height=l.height),n}}_balanceFactor(r){let e=r.left?r.left.height:-1;return(r.right?r.right.height:-1)-e}_updateHeight(r){let e=r.left?r.left.height:-1,t=r.right?r.right.height:-1;r.height=1+Math.max(e,t)}_balanceLL(r){let e=r.parent,t=r.left;t!==null&&(r.parent=t),t&&t.right&&(t.right.parent=r),t&&(t.parent=e),r===this.root?t&&this._setRoot(t):(e==null?void 0:e.left)===r?e.left=t:e&&(e.right=t),t&&(r.left=t.right,t.right=r),this._updateHeight(r),t&&this._updateHeight(t)}_balanceLR(r){let e=r.parent,t=r.left,n;t&&(n=t.right),r&&n!==null&&(r.parent=n),t&&n!==null&&(t.parent=n),n&&(n.left&&t!==null&&(n.left.parent=t),n.right&&(n.right.parent=r),n.parent=e),r===this.root?n&&this._setRoot(n):e&&(e.left===r?e.left=n:e.right=n),n&&(r.left=n.right,t&&(t.right=n.left),n.left=t,n.right=r),this._updateHeight(r),t&&this._updateHeight(t),n&&this._updateHeight(n)}_balanceRR(r){let e=r.parent,t=r.right;t!==null&&(r.parent=t),t&&(t.left&&(t.left.parent=r),t.parent=e),r===this.root?t&&this._setRoot(t):e&&(e.left===r?e.left=t:e.right=t),t&&(r.right=t.left,t.left=r),this._updateHeight(r),t&&this._updateHeight(t)}_balanceRL(r){let e=r.parent,t=r.right,n;t&&(n=t.left),n!==null&&(r.parent=n),t&&n!==null&&(t.parent=n),n&&(n.left&&(n.left.parent=r),n.right&&t!==null&&(n.right.parent=t),n.parent=e),r===this.root?n&&this._setRoot(n):e&&(e.left===r?e.left=n:e.right=n),n&&(r.right=n.left),t&&n&&(t.left=n.right),n&&(n.left=r),n&&(n.right=t),this._updateHeight(r),t&&this._updateHeight(t),n&&this._updateHeight(n)}_balancePath(r){r=this.ensureNode(r);let e=this.getPathToRoot(r,t=>t,!1);for(let t=0;t<e.length;t++){let n=e[t];if(n)switch(this._updateHeight(n),this._balanceFactor(n)){case-2:n&&n.left&&(this._balanceFactor(n.left)<=0?this._balanceLL(n):this._balanceLR(n));break;case 2:n&&n.right&&(this._balanceFactor(n.right)>=0?this._balanceRR(n):this._balanceRL(n))}}}_replaceNode(r,e){return e.height=r.height,super._replaceNode(r,e)}};return Y(ee);})();
6
6
  /**
7
7
  * data-structure-typed
8
8
  *