Я пытаюсь сделать обход заказа уровня и хочу передать это бинарного деревоКак создать двоичное дерево [3,9,20, null, null, 15,7], чтобы передать его методу levelOrder?
[3,9,20,null,null,15,7]
в метод
public List<List<Integer>> levelOrder(TreeNode root) {
Но это не работает.
TreeNode bt = [3,9,20,null,null,15,7];
levelOrder(bt);
Это метод levelOrder
public List<List<Integer>> levelOrder(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
List<List<Integer>> wrapList = new LinkedList<List<Integer>>();
if(root == null) return wrapList;
queue.offer(root);
while(!queue.isEmpty()){
int levelNum = queue.size();
List<Integer> subList = new LinkedList<Integer>();
for(int i=0; i<levelNum; i++) {
if(queue.peek().left != null) queue.offer(queue.peek().left);
if(queue.peek().right != null) queue.offer(queue.peek().right);
subList.add(queue.poll().val);
}
wrapList.add(subList);
}
return wrapList;
}
Это TreeNode
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
Можете ли вы показать нам 'метод levelOrder'? –
Я обновил свой пост. – justcurious
Когда вы говорите, что «это не работает», каков список, который был возвращен сейчас, в отличие от того, как должен выглядеть список? –