2015-05-08 2 views
0

для деревьев, в методах обхода. Я хочу, чтобы значения возвращались. метод, который я пытался, возвращает только одно значение.метод обхода с возвращаемым значением

int inorder(BSTNode r) { 
    int result = 0 ; 
    if (r != null) { 
     inorder(r.getLeft()); 
    result= r.getData(); 
     inorder(r.getRight()); 
    } 
    return result; 
} 

этот код работает отлично, но я хочу, чтобы метод возвращал значения вместо

private void inorder(BSTNode r) { 
    if (r != null) { 
     inorder(r.getLeft()); 
     System.out.print(r.getData() + " "); 
     inorder(r.getRight()); 
    } 
} 
+0

Что вы подразумеваете под "значениями"? – CptBartender

+0

узел «данные» в моем дереве – Sara

+0

Вы сейчас делаете. Корень дерева, если быть точным, поскольку вы не используете ни данные левого ребенка, ни правильные данные. Каков ваш ожидаемый результат? Что возвращает 'r.getData()'? – CptBartender

ответ

2

Вы хотите использовать какой-то список структуры накапливать данные:

void inorder(BSTNode r, List list) { 
    if (r != null) { 
    inorder(r.getLeft(), list); 
    list.add(r.getData()); 
    inorder(r.getRight(), list); 
    } 
} 

, ссылающегося функция с

List list = new List(); 
inorder(bst, list); 

По завершении заполнения порядка list будет содержать значения дерева.

Точный синтаксис будет зависеть от языка, который вы используете.

+0

java, при вызове метода, что я должен отправить в список, является то, что правильный inorder (root, null) – Sara

+0

для java вы бы создали список 'List list = new ArrayList ()' и затем вызывать 'inorder (bst, list) ', где T - тип данных, хранящихся в дереве – snowp

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