Найти значение в дереве - PullRequest
0 голосов
/ 08 марта 2019

Мне нужно создать метод, который проверяет, присутствует ли данное дерево в дереве или нет, и соответственно возвращает true или false. Дерево не является двоичным деревом поиска, поэтому значения узла не всегда меньше слева. Мой конструктор, как показано ниже:

public class TreeNode {
    TreeNode left; 
    int payload; 
    TreeNode right;

    public TreeNode(int x){
       payload = x; 
    }

Приведенный ниже метод отлично работает:

public boolean find(int x,TreeNode root) {

    if (root.payload == x) {
        return true;
    } if (root.left != null && find(x, root.left)){
        return true;
    }if (root.right != null && find(x, root.right)) {
        return true;
    }
    return false;

}

Однако я понял, что должен следовать руководству и сделать это следующим образом:

 public Boolean find(int x)

Как я могу изменить свой код для реализации этой версии?

1 Ответ

1 голос
/ 08 марта 2019

Сделайте это методом экземпляра, заменив передачу дерева для вызова метода на this:

public Boolean find(int x) {

    if (this.payload == x) {
        return true;
    } if (this.left != null && this.left.find(x)){
        return true;
    }if (this.right != null && this.right.find(x)) {
        return true;
    }
    return false;

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