تنفيذ ES6 لبنية بيانات شجرة البحث الثنائية مع دعم TypeScript.
قم بزيارة إرشادات المساهمة لمعرفة المزيد حول كيفية ترجمة هذا المستند إلى المزيد من اللغات.
yarn add binstree
npm install binstree
شجرة البحث الثنائية عبارة عن بنية بيانات شجرة ثنائية ذات جذور، تحتوي عقدها على key
فريد value
مرتبطة، وتشير إلى شجرتين فرعيتين متميزتين left
right
. تفي الشجرة بخاصية البحث الثنائي، وبالتالي فإن المفتاح في كل عقدة أكبر من أي مفتاح مخزن في الشجرة الفرعية اليسرى، وأقل من أي مفتاح مخزن في الشجرة الفرعية اليمنى. وكنتيجة وشيكة لهذا المبدأ، تستفيد عمليات الشجرة بشكل كبير، حيث أن كل مقارنة مفاتيح في المتوسط تسمح للعمليات بتخطي حوالي نصف الشجرة، بحيث يستغرق كل إدراج أو حذف أو بحث وقتًا يتناسب مع لوغاريتم عدد العقد مخزنة في الشجرة.
تعرض Binstree واجهة برمجة تطبيقات قابلة للتسلسل، والتي يمكن استخدامها من خلال بناء جملة بسيط وبسيط، مما يسمح لك بدمج الأساليب بشكل فعال.
يمكن أيضًا العثور على أمثلة الاستخدام في دليل test
.
'use strict' ;
const { Tree , Node } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
//=> Tree { root: null }
tree . insert ( 10 , 'A' ) ;
// => Tree { root: Node { left: null, right: null, key: 10, value: 'A' } }
tree . root ;
//=> Node { left: null, right: null, key: 10, value: 'A' }
const node = new Node ( 10 , 'A' ) ;
tree . root . key === node . key ;
//=> true
tree . root . value === node . value ;
//=> true
tree . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) . root ;
//=> Node { left: [Node], right: [Node], key: 10, value: 'A' }
tree . root . left ;
//=> Node { left: null, right: null, key: 5, value: 'B' }
tree . root . right ;
//=> Node { left: null, right: null, key: 15, value: 'C' }
tree . insert ( 2 , 'D' ) . insert ( 7 , 'E' ) . insert ( 12 , 'F' ) . insert ( 20 , 'G' ) ;
tree . search ( 5 ) ;
//=> Node { key: 5, value: 'B',
// left: Node { left: null, right: null, key: 2, value: 'D' },
// right: Node { left: null, right: null, key: 7, value: 'E' } }
tree . search ( 15 ) ;
//=> Node { key: 15, value: 'C',
// left: Node { left: null, right: null, key: 12, value: 'F' },
// right: Node { left: null, right: null, key: 20, value: 'G' } }
tree . includes ( 12 ) ;
//=> true
tree . includes ( 100 ) ;
//=> false
tree . height ( ) ;
//=> 2
tree . isBalanced ( ) ;
//=> true
tree . remove ( 10 ) . root ;
//=> Node { key: 12, value: 'F',
// left: Node { left: [Node], right: [Node], key: 5, value: 'B' },
// right: Node { left: null, right: [Node], key: 15, value: 'C' } }
tree . isBalanced ( ) ;
//=> false
insert(key, value)
Tree
يقوم بتغيير الشجرة عن طريق إدراج عقدة جديدة في الموقع المناسب.
key
Number
يمكن أن يكون أي رقم يتوافق مع key
العقدة التي تم إنشاؤها. كل عقدة لها key
الفريد الخاص بها.
value
Any
يمكن أن تكون أي قيمة سيتم تخزينها في العقدة التي تم إنشاؤها.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) ;
// => Tree { root: Node { key: 10, value: 'A', left: null, right: null } }
root
Node | null
إرجاع العقدة الجذرية للشجرة. إذا كانت الشجرة فارغة يتم إرجاعها null
.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) ;
// => Tree { root: Node { key: 10, value: 'A', left: null, right: null } }
tree . root ;
// => Node { key: 10, value: 'A', left: null, right: null }
isEmpty()
Boolean
تحديد ما إذا كانت الشجرة فارغة، وإرجاع true
أم false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) ;
tree . isEmpty ( ) ;
// => false
remove(key)
Tree
يقوم بتغيير الشجرة عن طريق إزالة العقدة المقابلة للوسيطة key
.
key
Number
يمكن أن يكون أي رقم يتوافق مع key
العقدة الموجودة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) ;
tree . remove ( 10 ) ;
//=> Tree { root: null }
includes(key)
Boolean
تحديد ما إذا كانت الشجرة تتضمن عقدة key
معين، وإرجاع true
أو false
حسب الاقتضاء.
key
Number
key
العقدة للبحث عنه.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) ;
tree . includes ( 10 ) ;
// => true
tree . includes ( 25 ) ;
// => false
tree . includes ( 5 ) ;
// => true
search(key)
Node | null
تحديد ما إذا كانت الشجرة تتضمن عقدة key
معين، مع إرجاع العقدة المستهدفة أو null
حسب الاقتضاء.
key
Number
key
العقدة للبحث عنه.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) ;
tree . search ( 10 ) ;
// => Node { key: 10, value: 'A', left: [Node], right: null }
tree . search ( 25 ) ;
// => null
tree . search ( 5 ) ;
// => Node { key: 5, value: 'B', left: null, right: null }
min()
Node | null
تُرجع العقدة الموجودة في أقصى اليسار في الشجرة، وبالتالي العقدة المقابلة key
الأدنى.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 0 , 'C' ) ;
tree . min ( ) ;
// => Node { key: 0, value: 'C', left: null, right: null }
max()
Node | null
تُرجع العقدة الموجودة في أقصى اليمين في الشجرة، وبالتالي العقدة المقابلة key
الأقصى.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 15 , 'B' ) . insert ( 25 , 'C' ) ;
tree . max ( ) ;
// => Node { key: 25, value: 'C', left: null, right: null }
size()
Number
إرجاع العدد الإجمالي للعقد الموجودة في الشجرة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 15 , 'B' ) . insert ( 25 , 'C' ) ;
tree . size ( ) ;
// => 3
height()
Number
إرجاع أقصى مسافة لأي عقدة ورقية من الجذر. إذا كانت الشجرة فارغة يتم إرجاع -1
.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) ;
tree . height ( ) ;
// => 0
tree . insert ( 15 , 'B' ) . insert ( 25 , 'C' ) . insert ( 35 , 'D' ) ;
tree . height ( ) ;
//=> 3
inOrder(fn)
Tree
يطبق الاجتياز بالترتيب (اجتياز العمق الأول - LNR) على الشجرة وينفذ وظيفة fn
المتوفرة على كل عقدة تم اجتيازها دون تغيير الشجرة نفسها.
fn
Function
وظيفة للتنفيذ على كل عقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . inOrder ( node => console . log ( node . key ) ) ;
// => 5
// 10
// 15
preOrder(fn)
Tree
يطبق اجتياز الطلب المسبق (اجتياز العمق الأول - NLR) على الشجرة وينفذ وظيفة fn
المتوفرة على كل عقدة تم اجتيازها دون تغيير الشجرة نفسها.
fn
Function
وظيفة للتنفيذ على كل عقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . preOrder ( node => console . log ( node . key ) ) ;
// => 10
// 5
// 15
postOrder(fn)
Tree
يطبق اجتياز ما بعد الطلب (اجتياز العمق الأول - LRN) على الشجرة وينفذ وظيفة fn
المتوفرة على كل عقدة تم اجتيازها دون تغيير الشجرة نفسها.
fn
Function
وظيفة للتنفيذ على كل عقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . postOrder ( node => console . log ( node . key ) ) ;
// => 5
// 15
// 10
outOrder(fn)
Tree
يطبق اجتياز الترتيب الخارجي (اجتياز العمق الأول - RNL) على الشجرة وينفذ وظيفة fn
المتوفرة على كل عقدة تم اجتيازها دون تغيير الشجرة نفسها.
fn
Function
وظيفة للتنفيذ على كل عقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . outOrder ( node => console . log ( node . key ) ) ;
// => 15
// 10
// 5
levelOrder(fn)
Tree
يطبق اجتياز ترتيب المستوى (اجتياز العرض أولاً) على الشجرة وتنفيذ وظيفة fn
المتوفرة على كل عقدة تم اجتيازها دون تغيير الشجرة نفسها.
fn
Function
وظيفة للتنفيذ على كل عقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . levelOrder ( node => console . log ( node . key ) ) ;
// => 10
// 5
// 15
clear()
Tree
يقوم بتغيير الشجرة عن طريق إزالة جميع العقد الموجودة وإعادتها فارغة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
//=> Tree { root: Node { left: [Node], right: [Node], key: 3, value: 'A' } }
tree . size ( ) ;
//=> 3
tree . clear ( ) ;
//=> Tree { root: null } }
tree . size ( ) ;
//=> 0
toArray()
Array<Node>
يتم تطبيق الاجتياز بالترتيب على الشجرة وتخزين كل عقدة تم اجتيازها في مصفوفة. يتم إرجاع المصفوفة في نهاية الاجتياز.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) . insert ( 3 , 'D' ) . insert ( 20 , 'F' ) ;
tree . toArray ( ) ;
//=> [
// Node { left: null, right: null, key: 3, value: 'D' },
// Node { left: [Node], right: null, key: 5, value: 'B' },
// Node { left: [Node], right: [Node], key: 10, value: 'A' },
// Node { left: null, right: [Node], key: 15, value: 'C' },
// Node { left: null, right: null, key: 20, value: 'F' }
// ]
toPairs()
Array<[Number, Any]>
يطبق الاجتياز بالترتيب على الشجرة ولكل عقدة تم اجتيازها يتم تخزينها في صف n
، حيث n
حجم الشجرة، زوج مرتب/صفين، حيث يكون العنصر الأول هو number
مطابق key
الشجرة العقدة التي تم اجتيازها، والأخيرة هي قيمة من النوع any
، المقابلة value
المخزنة في العقدة التي تم اجتيازها. يتم إرجاع n
-tuple في نهاية الاجتياز.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) . insert ( 3 , 'D' ) . insert ( 20 , 'F' ) ;
tree . toPairs ( ) ;
//=> [ [3, 'D'], [5, 'B'], [10, 'A'], [15, 'C'], [20, 'F'] ]
leafNodes()
Array<Node>
يتم تطبيق الاجتياز بالترتيب على الشجرة وتخزين كل عقدة ورقية تم اجتيازها (عقدة بدون عناصر فرعية) في صفيف. يتم إرجاع المصفوفة في نهاية الاجتياز.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . leafNodes ( ) ;
//=> [
// Node { left: null, right: null, key: 5, value: 'B' },
// Node { left: null, right: null, key: 15, value: 'C' }
// ]
fullNodes()
Array<Node>
يتم تطبيق الاجتياز بالترتيب على الشجرة وتخزين كل عقدة كاملة تم اجتيازها (عقدة ذات طفلين غير فارغين) في صفيف. يتم إرجاع المصفوفة في نهاية الاجتياز.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . fullNodes ( ) ;
//=> [
// Node { left: [Node], right: [Node], key: 10, value: 'A' }
// ]
partialNodes()
Array<Node>
يطبق الاجتياز بالترتيب على الشجرة ويخزن كل عقدة جزئية (عقدة ذات فرع واحد غير فارغ) في صفيف. يتم إرجاع المصفوفة في نهاية الاجتياز.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) . insert ( 20 , 'D' ) . insert ( 3 , 'E' ) ;
tree . partialNodes ( ) ;
//=> [
// Node { left: [Node], right: null, key: 5, value: 'B' },
// Node { left: null, right: [Node], key: 15, value: 'C' }
// ]
isBalanced()
Boolean
يُرجع true
إذا كانت الشجرة متوازنة الارتفاع، مما يعني أن شجرتها الفرعية اليسرى متوازنة، وشجرتها الفرعية اليمنى متوازنة، وأن الفرق بين ارتفاعات الشجرة الفرعية اليسرى والشجرة الفرعية اليمنى ليس أكبر من 1. في أي حالة أخرى، تُرجع الطريقة false
.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . isBalanced ( ) ;
//=> true
tree . insert ( 20 , 'D' ) . insert ( 30 , 'E' ) ;
tree . isBalanced ( ) ;
//=> false
isComplete()
Boolean
تُرجع الطريقة true
إذا كانت الشجرة عبارة عن شجرة بحث ثنائية كاملة، مما يعني أن كل مستوى، باستثناء المستوى الأخير، مملوء بالكامل، وجميع العقد في أقصى اليسار قدر الإمكان. في أي حالة أخرى، ترجع الطريقة خطأ.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . isComplete ( ) ;
//=> true
tree . insert ( 3 , 'D' ) ;
tree . isComplete ( ) ;
//=> true
tree . insert ( 20 , 'E' ) ;
tree . isComplete ( ) ;
//=> false
isFull()
Boolean
ترجع الطريقة true
إذا كانت جميع العقد الموجودة في الشجرة إما عقدًا ورقية أو عقدًا كاملة. في أي حالة أخرى (درجة العقدة تساوي 1) تُرجع الطريقة false
.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . isFull ( ) ;
//=> true
tree . insert ( 8 , 'D' ) ;
tree . isFull ( ) ;
//=> false
isPerfect()
Boolean
ترجع الطريقة true
إذا كانت جميع العقد الداخلية الموجودة في الشجرة هي عقد كاملة (درجة العقدة تساوي 2) وجميع العقد الورقية على نفس مستوى الارتفاع. في أي حالة أخرى (درجة العقدة تساوي 1 أو تم العثور على العقد الورقية والكاملة على نفس مستوى الارتفاع) تُرجع الطريقة false
.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) ;
tree . isPerfect ( ) ;
//=> true
tree . insert ( 3 , 'D' ) . insert ( 7 , 'E' ) . insert ( 12 , 'F' ) . insert ( 20 , 'G' ) ;
tree . isPerfect ( ) ;
//=> true
tree . insert ( 1 , 'H' ) ;
tree . isPerfect ( ) ;
//=> false
تتوفر أيضًا، إلى جانب فئة Tree
المكشوفة، فئة Node
، وهي مفيدة بشكل أساسي لأغراض الاختبار، حيث يمكن استخدامها لمقارنة عقد الشجرة. تحتوي الفئة على طريقة إنشاء ثنائية، مع key
ومعلمة value
، تتوافق مع المفتاح والقيمة المخزنة في المثيل الذي تم إنشاؤه، على التوالي.
key
Number
key
المطابق لمثيل العقدة.
const { Node } = require ( 'binstree' ) ;
const node = new Node ( 10 , 'A' ) ;
// => { key:10, value: 'A', left: null, right: null }
node . key ;
//=> 10
value
Any
القيمة التي تحتوي عليها العقدة.
const { Node } = require ( 'binstree' ) ;
const node = new Node ( 10 , 'A' ) ;
// => { key: 10, value: 'A', left: null, right: null }
node . value ;
//=> 'A'
node . value = 'B'
// => { key: 10, value: 'B', left: null, right: null }
left
Node | null
الشجرة الفرعية اليسرى التي تشير إليها العقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root ;
// => { key: 10, value: 'A', left: null, right: null }
tree . root . left ;
//=> null
tree . insert ( 5 , 'B' ) . root ;
// => { key: 10, value: 'A', left: { key: 5, value: 'B', left: null, right: null } , right: null }
tree . root . left ;
//=> { key: 5, value: 'B', left: null, right: null }
right
Node | null
الشجرة الفرعية اليمنى التي تشير إليها العقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root ;
// => { key: 10, value: 'A', left: null, right: null }
tree . root . right ;
//=> null
tree . insert ( 15 , 'B' ) . root ;
// => { key: 10, value: 'A', left: null , right: { key: 15, value: 'B', left: null, right: null } }
tree . root . right ;
//=> { key: 15, value: 'B', left: null, right: null }
children
Array<Node>
إرجاع مصفوفة تتصل بأبناء المثيل، حيث يكون الطفل الأيسر، إذا كان موجودًا، هو العنصر الأول في المصفوفة، والطفل الأيمن، إذا كان موجودًا، هو العنصر الأخير في المصفوفة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . children ;
//=> []
tree . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) . root . children ;
// => [
// { key: 5, value: 'B', left: null , right: null },
// { key: 15, value: 'C', left: null, right: null }
// ]
degree
Number
إرجاع عدد الأشجار الفرعية التي تشير إليها العقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . degree ;
//=> 0
tree . insert ( 5 , 'B' ) . root . degree ;
//=> 1
tree . insert ( 15 , 'C' ) . root . degree ;
//=> 2
height()
Number
يُرجع الحد الأقصى للمسافة لأي عقدة طرفية من مثيل العقدة.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . insert ( 15 , 'B' ) . insert ( 25 , 'C' ) . insert ( 35 , 'D' ) ;
tree . root . height ( ) ;
//=> 3
tree . root . right . height ( ) ;
//=> 2
isFull()
Boolean
تحديد ما إذا كانت العقدة هي عقدة كاملة (لديها طفلان غير فارغين)، وإرجاع true
أو false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . isFull ( ) ;
//=> false
tree . insert ( 5 , 'B' ) . insert ( 15 , 'C' ) . root . isFull ( ) ;
//=> true
isInternal()
Boolean
تحديد ما إذا كانت العقدة هي عقدة داخلية (تحتوي على طفل واحد على الأقل غير فارغ)، وإرجاع true
أو false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . isInternal ( ) ;
//=> false
tree . insert ( 5 , 'B' ) . root . isInternal ( ) ;
//=> true
isLeaf()
Boolean
تحديد ما إذا كانت العقدة عبارة عن عقدة طرفية (ليس لها أطفال)، وإرجاع true
أو false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . isLeaf ( ) ;
//=> true
tree . insert ( 5 , 'B' ) . root . isLeaf ( ) ;
//=> false
isLeftPartial()
Boolean
يحدد ما إذا كانت العقدة هي عقدة جزئية يسرى (تحتوي على عقدة فرعية واحدة غير فارغة)، وإرجاع true
أو false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . isLeftPartial ( ) ;
//=> false
tree . insert ( 5 , 'B' ) . root . isLeftPartial ( ) ;
//=> true
isPartial()
Boolean
يحدد ما إذا كانت العقدة هي عقدة جزئية (تحتوي على فرع واحد غير فارغ)، وإرجاع true
أو false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . isPartial ( ) ;
//=> false
tree . insert ( 15 , 'B' ) . root . isPartial ( ) ;
//=> true
isRightPartial()
Boolean
يحدد ما إذا كانت العقدة هي عقدة جزئية صحيحة (تحتوي على فرع واحد صحيح غير فارغ)، وإرجاع true
أو false
حسب الاقتضاء.
const { Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
tree . insert ( 10 , 'A' ) . root . isRightPartial ( ) ;
//=> false
tree . insert ( 15 , 'B' ) . root . isRightPartial ( ) ;
//=> true
toPair()
[Number, Any]
تُرجع زوجًا مرتبًا/2-tuple، حيث يكون العنصر الأول عبارة عن رقم يتوافق مع key
العقدة، والأخير عبارة عن قيمة يمكن أن تكون من أي نوع، تتوافق مع value
المخزنة في العقدة.
const { Node , Tree } = require ( 'binstree' ) ;
const tree = new Tree ( ) ;
const node = new Node ( 5 , 'B' ) ;
node . toPair ( ) ;
//=> [5, 'B']
tree . insert ( 10 , 'A' ) . root . toPair ( ) ;
//=> [10, 'A']
لمزيد من المعلومات حول كيفية المساهمة في المشروع، يرجى قراءة إرشادات المساهمة.
cd binstree
npm install
أو yarn install
npm test
أو yarn test
معهد ماساتشوستس للتكنولوجيا