二叉查找树,数据结构中很经典也很基础的知识。今天我们来用js实现一个二叉树的功能。
首先,我们来分解功能,实现一个二叉树。节点,树的整体结构,插入 方法,当然还有查找方法(中序,先序,后序)
第一步,我们来实现节点类,
function Node(data) { this.data = data this.left = left this.right = right } Node.prototype.getData = function() { return this.data }
第二步,我们来实现树的整体结构类以及插入方法。
function Bst () { this.root = null } Bst.prototype.insert = function(data) { let node = new Node(data) if (!this.root) { this.root = node } else { let cur = this.root let mid = null while (true) { mid = cur if (data < cur.data) { cur = cur.left if (!cur) { mid.left = node break } } else { cur = cur.right if (!cur) { mid.right = node break } } } } }
接下来我们来测试下。我们在浏览器中new一个Bst,并且插入一些数值,看看是否和我们所想要的结果一样。
let c = new Bst() c.insert(50) c.insert(40) c.insert(60) c.insert(39) c.insert(45)
可以看到如我们所预期的一样,二叉查找树正确的显示出来了。