2015-05-10 2 views
0

Как и в вопросе говорит, что я пытаюсь создать список массивов, который имеет все данные в каждом из узлов в двоичном дереве поиска.Как сохранить все данные BST в список массивов?

public List storeKeyValues(){ 

    List keyvalues = new ArrayList(); 
    boolean notdone = false; 
    temp = root; 

    if(temp == null){ 
     return null; 
    } 

    else{ 
     list.add(temp.data); 
     while(!notdone){ 


      while(temp.left != null){ 

       list.add(temp.data); 

       temp = temp.left; 
      } 


     } 


    } 


    return keyvalues; 

} 

Я знаю, что это не будет работать, но это то, что я сделал. Может ли кто-нибудь объяснить мне, как это сделать правильно?

Заранее спасибо

ответ

1

Вы можете достичь этого путем recursive.

public class TreeNodeDemo { 

    List<Integer> values = new ArrayList<Integer>(); 

    public List<Integer> storeKeyValues(TreeNode root) { 
     treeTravel(root); 
     return values; 
    } 

    private void treeTravel(TreeNode node) { 
     if (node != null) { 
      treeTravel(node.left); 
      values.add(node.value); 
      treeTravel(node.right); 
     } 
    } 

    public static void main(String args[]) { 
     TreeNode root = new TreeNode(4); 
     root.left = new TreeNode(2); 
     root.right = new TreeNode(5); 

     System.out.println(new TreeNodeDemo().storeKeyValues(root)); 
    } 

} 
Смежные вопросы