diff --git a/src/other/tree2.js b/src/other/tree2.js new file mode 100644 index 0000000..95f1dd2 --- /dev/null +++ b/src/other/tree2.js @@ -0,0 +1,63 @@ +//实现二叉树 +class BinaryTree { + constructor(data) { + this.data = data; + this.left = null; + this.right = null; + } +} +BinaryTree.prototype.insert = function(data) { + if (data < this.data) { + if (this.left === null) { + this.left = new BinaryTree(data); + } + } +} +BinaryTree.prototype.traverse = function(callback) { + if (this.left !== null) { + this.left.traverse(callback); + } +} +// 查找树 +BinaryTree.prototype.find = function(data) { + if (this.data === data) { + return this; + } + for (let i = 0; i < this.children.length; i++) { + let result = this.children[i].find(data); + if (result) { + return result; + } + } + return null; +} +// 删除树 +BinaryTree.prototype.remove = function(data) { + for (let i = 0; i < this.children.length; i++) { + if (this.children[i].data === data) { + this.children.splice(i, 1); + return; + } + } +} +// 清空树 +BinaryTree.prototype.clear = function() { + this.children = []; +} +// 树的高度 +BinaryTree.prototype.height = function() { + let height = 0; +} +// 树的深度 +BinaryTree.prototype.depth = function() { + let depth = 0; +} +// 树的大小 +BinaryTree.prototype.size = function() { + let size = 0; +} +// 树的叶子节点 +BinaryTree.prototype.leaf = function() { + let leaf = 0; +} +module.exports = BinaryTree; \ No newline at end of file