初學二叉樹,參考了網上使用遞歸創建二叉樹的方法,發現只能創建數字型二叉樹,所以我想實現一個創建方法:可以接受字符串,然后按照添加順序,從左到右創建節點。比如說,傳入7個值,我希望它的結構是這樣的:????????????????????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??根節點
?*?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();
javascript 使用遞歸創建二叉樹
Walk_
2016-12-05 20:50:20