Двоичное дерево — одна из распространенных структур данных и, конечно же, одна из структур данных, с которыми должны быть знакомы программисты. Я использовал его, когда был первокурсником
C++а такжеC语言Я реализовал это, и я использую его недавноjavascript, просто пишиjavascriptВариант с бинарным деревом, думаю, не будет слишком сложным.
Создать бинарное дерево
Некоторые распространенные бинарные деревья
Любой, кто изучал бинарные деревья, должен знать, что бинарное дерево может иметь не более двух узлов ветвления, и, конечно, узлов может не быть вовсе. На следующем рисунке показан вид обычного бинарного дерева:
код реализации
Обычно используются бинарные деревья.类создается в видеjavscriptЕсть сейчас类Но для того, чтобы ознакомиться с прототипом, мы все равно используем прототип для симуляции.类поведение. Вот реализованный код:
function Node(){
this.data = null
this.leftChild = null
this.rightChild = null
}
function BinaryTree(){
Node.call(this)
this.root = null
}
Вы можете видеть, что здесь определены два класса, один из которыхNodeкласс, а другойbinaryTreeДобрый. Один из узлов содержит поле данных и его левый и правый указатели, а дерево содержит все атрибуты, содержащиеся в узле, и корневой узел. Здесь его можно рассматривать как подкласс дерева, и в следующем используется原型Чтобы реализовать отношения наследования между ними:
// 实现继承
;(function () {
const F = function () {}
F.prototype = Node.prototype
BinaryTree.prototype = new F()
BinaryTree.prototype.constructor = BinaryTree
})()
BinaryTree.prototype.insertNode = function(data){
if(this.root === null){
this.root = {}
this.root.data = data
}else{
insertNode(this.root, data)
}
}
обход бинарного дерева
Общие методы обхода бинарного дерева:前序遍历,后序遍历,中序遍历так же как层次遍历, эти методы обхода можно использовать递归добиться, конечно, с помощью队列или栈Этого тоже можно добиться, но递归Или, если быть более кратким, код выглядит следующим образом:
BinaryTree.prototype.travelTree = function (root) { //前序遍历
console.log(root.data)
this.travelTree(root.leftChild)
this.travelTree(root.rightChild)
}
ВышеупомянутоеjavascriptСоздание и обход реализованного бинарного дерева, полный код пожалуйстанажмите
Отсканируйте приведенный ниже QR-код или найдите «Учебный класс мистера Тони» и подпишитесь на мою общедоступную учетную запись WeChat, после чего вы сможете получать мои последние статьи как можно скорее.