初學二叉樹,參考了網(wǎng)上使用遞歸創(chuàng)建二叉樹的方法,發(fā)現(xiàn)只能創(chuàng)建數(shù)字型二叉樹,所以我想實現(xiàn)一個創(chuàng)建方法:可以接受字符串,然后按照添加順序,從左到右創(chuàng)建節(jié)點。比如說,傳入7個值,我希望它的結(jié)構(gòu)是這樣的:????????????????????value1????????value2 ? ? ? ? ? ?value3value4 ? ?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??根節(jié)點
?*?newNode?新節(jié)點?
?*/
var?insertNode?=?function(node,?newNode)?{
//判斷新元素的key值是小于父元素的key
if(newNode.key?<?node.key)?{//新元素的key值小于父元素的key,新節(jié)點將被插入在父元素左側(cè)。
????if(node.left?===?null)?{?//如果沒有左側(cè)子節(jié)點,就在這插入新節(jié)點
?????????node.left?=?newNode;
????}?else?{?//左側(cè)已經(jīng)存在新節(jié)點啦,遞歸自己到樹的下一層
?????????insertNode(node.left,?newNode);
????}
}?else?{
????if(node.right?===?null)?{
????????node.right?=?newNode;
????}?else?{
????????insertNode(node.right,?newNode);
????}
????}
????}
}
var?tree?=?new?BinarySearchTree();
javascript 使用遞歸創(chuàng)建二叉樹
Walk_
2016-12-05 20:50:20