Тесты наименьшего общего предка провалились - PullRequest
0 голосов
/ 08 октября 2019

Я нахожу самого низкого общего предка дерева. Моя логика заключается в том, чтобы рекурсивно обходить дерево по порядку, посмотреть, присутствуют ли оба узла на одной стороне дерева или нет. Если да, то ответом будет корень, пройденный первым, будет ответом (то же самое, если оба узла находятся справа). Если оба узла присутствуют на разных сторонах дерева, корень будет самым низким общим предком. Я передаю некоторые тестовые случаи, но не могу выполнить другие, и, к сожалению, мой сайт не показывает мне тестовые случаи, которые я провалю. Может кто-нибудь сказать мне, где моя логика неверна / тестовые случаи не удалось? Спасибо!

'' '

public class Solution {

/*  Binary Tree Node class
 * 
 * 
     class BinaryTreeNode<T> {
        T data;
        BinaryTreeNode<T> left;
        BinaryTreeNode<T> right;

        public BinaryTreeNode(T data) {
            this.data = data;
        }
    }
    */
    public static int leftstore = 0;
    public static int rightstore = 0;
    public static int left(BinaryTreeNode <Integer> root, int x, int y)
    {
          if(root == null)
          {
             return -1;
          }
          if( root.data == x || root.data ==y )
          {
              leftstore = 1;
              return root.data;
          }
        return leftstore;
    }

    public static int right(BinaryTreeNode <Integer> root, int x, int y)
    {
         if(root == null)
          {
             return -1;
          }
         if( root.data == x || root.data == y )
          {
              rightstore = 1;
             return root.data;
          }
        return rightstore;
    }

    public static int lcaBinaryTree(BinaryTreeNode <Integer> root , int a, int b){
        // Write your code here
        if(root.data == a || root.data ==b)
        {
            return root.data;
        }
        int left = left(root.left,a,b);
        int right = right(root.right,a,b);
        if(leftstore ==1 && rightstore ==1 )
        {
            return root.data;
        }
        else if(leftstore ==1 && rightstore ==0 )
        {
            return root.data;
        }
        else if(leftstore ==0 && rightstore ==1 )
        {
            return root.data;
        }

            return -1;



    }
}

' ''

...