Проблемы обхода порядка на уровне двоичного дерева ⇐ JAVA
-
Anonymous
Проблемы обхода порядка на уровне двоичного дерева
По заданному корню двоичного дерева возвращается порядок прохождения уровней значений его узлов. (т. е. слева направо, уровень за уровнем).
В чем проблема со следующей реализацией?
Как это исправить?
public List levelOrder4(TreeNode root) {
List result = new ArrayList();
// edge case check
if(root == null) return result;
// use queue to store nodes
Queue queue = new LinkedList();
queue.add(root);
// process nodes level by level
while(!queue.isEmpty()) {
List level = new ArrayList();
for(int i = 0; i < queue.size(); i++) {
TreeNode node = queue.poll();
level.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
result.add(level);
}
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... l-problems
По заданному корню двоичного дерева возвращается порядок прохождения уровней значений его узлов. (т. е. слева направо, уровень за уровнем).
В чем проблема со следующей реализацией?
Как это исправить?
public List levelOrder4(TreeNode root) {
List result = new ArrayList();
// edge case check
if(root == null) return result;
// use queue to store nodes
Queue queue = new LinkedList();
queue.add(root);
// process nodes level by level
while(!queue.isEmpty()) {
List level = new ArrayList();
for(int i = 0; i < queue.size(); i++) {
TreeNode node = queue.poll();
level.add(node.val);
if(node.left != null) queue.add(node.left);
if(node.right != null) queue.add(node.right);
}
result.add(level);
}
return result;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... l-problems
Мобильная версия