2015-05-04 1 views
1

Как написать правильный inorder-метод для моей реализации двоичного дерева?inorder метод в BinaryTree в Java (реализация массива)

Это мой тест-попробовать:

class Main { 
    public static void main(String[] args) { 
     BinaryTree myTree = new BinaryTree(); 
     myTree.inorder(0); 
    } 
} 

public class BinaryTree { 
    char[] tree = {'k', 'q', 'r', 'g', 'e', 'i', 'y', 'p', 'l', 'b', 'x', 'm', 'g', 't', 'u', 'v', 'z'}; 
    public void inorder(int node) { 
     if(node < tree.length) { 
      inorder((node * 2)); 
      System.out.print(tree[node] + " "); 
      inorder(((node * 2) + 1)); 
     } 
    } 
} 
+1

Любовь, чтобы помочь, что вы пытаетесь сделать здесь –

+0

Можете ли вы написать, что ваша проблема? Что не так? Каков ожидаемый результат? – JNYRanger

ответ

1

myTree.inorder (0); // параметр: 0

inorder ((node ​​* 2)); // node = 0, node * 2 = 0,

Следовательно, параметры будут оставаться равными нулю, это бесконечный цикл.

public class BinaryTree { 
    char[] tree = {'k', 'q', 'r', 'g', 'e', 'i', 'y', 'p', 'l', 'b', 'x', 'm', 'g', 't', 'u', 'v', 'z'}; 
    public void inorder(int node) { 
     if(node < tree.length) { 
      inorder((node * 2) + 1); 
      System.out.print(tree[node] + " "); 
      inorder(((node * 2) + 2)); 
     } 
    } 


    public static void main(String[] args) { 
     BinaryTree tree = new BinaryTree(); 
     tree.inorder(0); 
    } 
} 
+0

О, спасибо, я не умный человек ... – Bayer