构建二叉树 前序 中序 后序 递归方法
// 节点 function Node(element, left, right, parent) { this.element = element; this.left = left; this.right = right; this.parent = parent; this.show = function () { return this.element; } } // 二叉树 function BST() { this.root = null; // 插入节点 this.insert = function (element) { let node = new Node(element, null, null); if (this.root === null) { this.root = node; } else { let buffer = this.root; while (true) { // 左节点 if (node.element < buffer.element) { if (buffer.left === null) { buffer.left = node; node.parent = buffer; break; } else { buffer = buffer.left; } } else { //右节点 if (buffer.right === null) { buffer.right = node; node.parent = buffer; break; } else { buffer = buffer.right; } } } } } // 前序遍历 this.preOrderTraverse = function (node) { if (node === null) return; console.log('前序遍历' + node.show()); this.preOrderTraversal(node.left); this.preOrderTraversal(node.right); } // 中序遍历 this.inOrderTraverse = function (node) { if (node === null) return; this.centerOrderTravarsal(node.left); console.log('中序遍历' + node.show()); this.centerOrderTravarsal(node.right); } // 后序遍历 this.postOrderTraverse = function (node) { if (node === null) return; this.afterOrderTravarsal(node.left); this.afterOrderTravarsal(node.right); console.log('后序遍历' + node.show()); } } let bst = new BST(); let nodes = [20, 13, 42, 7, 15, 9, 14, 22, 21, 6, 24, 57]; nodes.forEach(key => { bst.insert(key); }); bst.preOrderTraverse(bst.root); //20,13,7,9,15,14,42,22,21 bst.inOrderTraverse(bst.root); //6,7,9,13,14,15,20,21,22,24,42,57 bst.postOrderTraverse(bst.root); // 6,9,7,14,15,13,21,24,22,57,42,20
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论