2011-07-09 15 views
2

我正在嘗試編寫一個代碼,該代碼搜索元素的二叉樹,然後添加該元素的開始。到目前爲止,我可以找到正確的位置並添加到該位置,但我失去了二叉樹的其餘部分。如何添加二叉樹的特定部分,但保持樹完整(Java)?

public void add(String addroot, String addleft) 
     if(root!=nodesearch){ 
     if(root.left!=null){ 
      root=root.left; 
      add(addroot, addleft); 
     } 
     if(root.right!=null){ 
      root=root.right; 
      add(addroot, addleft); 
     } 
     } 
     else 
     root=insert(); 
    } 

插入()添加的元素,它工作正常。謝謝你的幫助。

好吧,這就是我現在的想法。

private BinaryStringNode local_root = root 
public void add() 

    if(root!=nodesearch){ 
    if(local_root.left!=null){ 
     local_root=local_root.left; 
     add(); 
    } 
    if(local_root.right!=null){ 
     local_root=local_root.right; 
     add(); 
    } 
    } 
    else 
    local_root=insert(); 
} 

local_root = insert()使用local_root位置上root的插入方法。也會local_root = local_root.right移動通過根?

+0

不改變這根!使用臨時變量 –

+0

當我使用臨時變量進行搜索時,如何添加到根目錄中? – anon

+0

在你的add函數中,傳遞一個「local_root」的值,當你第一次調用這個函數的時候你傳遞的是root,但是在你的遞歸調用中你應該添加(local_root.right,addroot,addleft) –

回答

0

首先讓它三個獨立的功能

void insert(BinaryStringNode root, BinaryStringNode new_node){ 

} 

int add(BinaryStringNode root){ 

} 

BinaryStringNode find(String name){ 

} 

現在填寫的代碼,盡你所能。

當你想要得到的總和只需要調用add(find(s));其中s是一個字符串