Вопрос интервью на Java - PullRequest
0 голосов
/ 26 июня 2011

Я нашел этот вопрос на Java и думаю, что вывод идет справа налево под номером 3, значит:

2 1 2 0 1

Я прав?

Thnx !!

Класс IntNode:

public class IntNode;
{
    private int _value;
    private IntNode _next;

    public IntNode (int val, IntNode n)
    {
        _value = val;
        _next = n;
    }

    public IntNode getNext ()    {return _next;}
    public void setNext (IntNode node)    {_next = node;}
    public int getValue ()    {return _value;}
    public void setValue (int v)    {_value = v;}
}

Класс IntList:

public class IntList
{
    private IntNode _head;
    public IntList() {_head = null;}

    public void addHead (int val)
    {
        _head = new IntNode (val, _head);
    }
}

Класс узла:

public class Node
{
    private int _number;
    private Node _leftSon, _rightSon;

    public Node (int number)
    {
        _number = number;
        _leftSon = null;
        _rightSon = null;
    }

    public int getNumber()    {return _number;}
    public Node getLeftSon() {return _leftSon;}
    public Node getRightSon() {return _rightSon;}
}

Класс BinaryTree:

The BinaryTree Class:

public class BinaryTree
{
    public static IntList what (Node root , int i)
    {
        IntList level = new IntList();
        if (root != null)
            what (level, i, root);
        return level;
    }

    private static void what (IntList level, int i, Node t)
    {
        if (t != null)
        {
            if (i>0)
            {
            what (level, i-1, t.getRightSon());
            what (level, i-1, t.getLeftSon());
            }
            else
              level.addHead(t.getNumber());
        }
    }
}

И вопрос был:

1) Для следующего дерева (рис.), Что будет напечатано на экране для следующих строк:

IntList list = BinaryTree.what(root, 3); 
Sys...out... (list);

2) Что делает метод ' чем ' вообще, когда она получает корень двоичного дерева?

Tree

1 Ответ

4 голосов
/ 26 июня 2011

Без запуска кода, мне кажется, что он делает

  • Если он находится на уровне дерева <3, спуститесь в правый, затем левый дочерний элемент </li>
  • Если на уровне 3 добавить значение текущего узла в список

Таким образом, похоже, что он распечатывает все значения узлов на глубине 3 справа налево:

9, 1, 7, 6, 8
...