初学二叉树,参考了网上使用递归创建二叉树的方法,发现只能创建数字型二叉树,所以我想实现一个创建方法:可以接受字符串,然后按照添加顺序,从左到右创建节点。
比如说,传入7个值,我希望它的结构是这样的:
value1
value2 value3
value4 value6 value5 value7
我想了半天也没有想出,希望大家指点一下。
附带一份代码供大家参考:
function BinarySearchTree() { var Node = function(key) { this.key = key; this.left = null; //左键(元素) this.right = null; //右键(元素) } var root = null; //根元素 //向树中插入一个新键 this.insert = function(key) { if(root === null) { //判断根元素是否存在 root = newNode; } else { insertNode(root, newNode); } } /* node 根节点 * newNode 新节点 */ var insertNode = function(node, newNode) { //判断新元素的key值是小于父元素的key if(newNode.key < node.key) {//新元素的key值小于父元素的key,新节点将被插入在父元素左侧。 if(node.left === null) { //如果没有左侧子节点,就在这插入新节点 node.left = newNode; } else { //左侧已经存在新节点啦,递归自己到树的下一层 insertNode(node.left, newNode); } } else { if(node.right === null) { node.right = newNode; } else { insertNode(node.right, newNode); } } } } var tree = new BinarySearchTree();
相关分类