Нахождение высоты дерева без правых и левых ссылок - PullRequest
0 голосов
/ 19 октября 2019

Я пытался получить высоту корня из 2 деревьев (тот же корень). Я только начал работать с деревьями, и этот способ обхода без левых или правых ссылок вызывает у меня некоторые трудности.

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

  public int height(){ 
  //code is a little messy but the first number is the height of the root
           System.out.print("Height: ");
            return height(root);
         }

 private int height(TNode tn){
 if (tn == null) return 0;
       int counter = 0;
        //recursive call to get to the leaf nodes
        for (TNode cn: tn.getChildren()){
              height(cn);

        }//while at the leaf nodes, count the parent nodes of the leaf nodes

       while(tn.getParent() != null){ //if there's a parent
        tn = tn.getParent(); //tn becomes its parent
        counter+=1;
        if(tn.getParent() == null && tn == root){
        counter+=1;   
        }
      }  
      System.out.print(counter + " ");

           return counter;

}

Высоты2 дерева - 4 и 2. Коды дают

Высота: 4 4 4 3 3 4 4 4 3 2 3 3 3 2 2 0

Высота: 2 2 2 0

Я пытался использовать стеки и массивы, чтобы изолировать 4 и 2 в начале, но безрезультатно. Может быть, проблема очевидна, но, возможно, мое понимание обхода дерева таким образом немного отсутствует. Любые предложения будут оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...