Я написал решение для вопроса Leetcode номер 897: Увеличение дерева поиска по порядку, но последний тестовый пример выдал ошибку, в которой говорилось, что найден цикл в TreeNode. Я вручную проследил алгоритм для этого тестового примера, и в моих глазах он выглядит нормально. Нужна помощь в выяснении того, что означает «найденный цикл в TreeNode».
Описание вопроса:
При наличии корня бинарного дерева поиска переставьте дерево в нужном порядке так, чтобы самый левый узел в дереве теперь был корнем дерева, и каждый узел не имел левого дочернего элемента и только одного правого дочернего элемента.
Мое решение прошло успешно для этого тестового примера:
Ввод: [5,3,6,2,4,null,8,1,null,null,null,7,9]
Вывод/ожидание: [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
Это тестовый пример, для которого это не сработало:
Ввод: [2,1,4,null,null,3]
Вывод: ошибка — найден цикл в TreeNode
Ожидаемый результат: [1,null,2,null,3,null,4]
P.S. - я знаю, что это может быть не самое лучшее/оптимальное решение, но я придумал именно его, поэтому мне нужно выяснить, почему оно не работает для одного тестового примера.
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode increasingBST(TreeNode root) {
TreeNode current = root;
TreeNode newRoot = null;
Queue q = new LinkedList();
Stack stack = new Stack();
while(true){
if(current != null){
stack.push(current);
current = current.left;
}
if(stack.isEmpty()){
break;
}
if(current == null){
current = stack.pop();
q.add(current);
current = current.right;
}
}
newRoot = q.remove();
current = newRoot;
while(!q.isEmpty()){
current.right = q.remove();
current.left = null;
current = current.right;
}
return newRoot;
}
}
Подробнее здесь: https://stackoverflow.com/questions/735 ... earch-tree
LeetCode #897: Окончательный тестовый пример не работает для увеличения дерева поиска заказа ⇐ JAVA
Программисты JAVA общаются здесь
1759904743
Anonymous
Я написал решение для вопроса Leetcode номер 897: Увеличение дерева поиска по порядку, но последний тестовый пример выдал ошибку, в которой говорилось, что найден цикл в TreeNode. Я вручную проследил алгоритм для этого тестового примера, и в моих глазах он выглядит нормально. Нужна помощь в выяснении того, что означает «найденный цикл в TreeNode».
Описание вопроса:
При наличии корня бинарного дерева поиска переставьте дерево в нужном порядке так, чтобы самый левый узел в дереве теперь был корнем дерева, и каждый узел не имел левого дочернего элемента и только одного правого дочернего элемента.
Мое решение прошло успешно для этого тестового примера:
Ввод: [5,3,6,2,4,null,8,1,null,null,null,7,9]
Вывод/ожидание: [1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]
Это тестовый пример, для которого это не сработало:
Ввод: [2,1,4,null,null,3]
Вывод: ошибка — найден цикл в TreeNode
Ожидаемый результат: [1,null,2,null,3,null,4]
P.S. - я знаю, что это может быть не самое лучшее/оптимальное решение, но я придумал именно его, поэтому мне нужно выяснить, почему оно не работает для одного тестового примера.
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode increasingBST(TreeNode root) {
TreeNode current = root;
TreeNode newRoot = null;
Queue q = new LinkedList();
Stack stack = new Stack();
while(true){
if(current != null){
stack.push(current);
current = current.left;
}
if(stack.isEmpty()){
break;
}
if(current == null){
current = stack.pop();
q.add(current);
current = current.right;
}
}
newRoot = q.remove();
current = newRoot;
while(!q.isEmpty()){
current.right = q.remove();
current.left = null;
current = current.right;
}
return newRoot;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/73564248/leetcode-897-final-test-case-not-working-for-increasing-order-search-tree[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия