2016-10-09 1 views
0

Возникает вопрос:дерево, делает значение, равное сумме (булевой выход)

Определит «корень-к-листу путь», чтобы быть любой последовательностью узлов в дереве, начиная с корневым узлом и переходя вниз к листу. «Корневой путь пути» для этого пути является суммой всех узлов (включая корень) вдоль этого пути. Определите пустое дерево, чтобы не содержать путей от корня к листу (и, следовательно, его сумма равна нулю). Определите дерево с одним узлом, чтобы иметь путь от root-to-leaf, состоящий только из корня (и поэтому его сумма представляет собой значение корня). Учитывая двоичное дерево и значение «sum», верните true, если дерево имеет некоторый путь от root-to-leaf, так что добавление всех значений вдоль пути равно «sum». Верните false, если такой путь не найден.

и у меня есть:

public boolean BTpathsum(BinNode root, int sum) 
{ 
     if(root==null) 
{ 
    return false; 
} 
else if(root.value() == sum){ 
return true; 
} 
else{ 
    return BTpathsum(root.left, sum - root.value()) || BTpathsum(root.right, sum - root.value()); 
} 
} 

Почему это оказывается неправильным для меня?

ответ

0

Здесь вы идете

public boolean BTpathsum(BinNode root, int sum) 
{ 
    if(root!=null) 
    { 
     if(root.value() == sum) 
      return true; 
     else 
      return BTpathsum(root.left, sum - root.value()) || BTpathsum(root.right, sum - root.value()); 
    } 
    else if(sum == 0) 
     return true; 
    else 
     return false; 
} 

Вы не проверяли, чтобы убедиться, что дерево не было пусто. Если он имеет высоту нуля и сумму 0, вам нужно вернуть true.

 Смежные вопросы

  • Нет связанных вопросов^_^