我试图做一个水平顺序遍历,并希望通过这个二叉树
[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;
}
这是树节点
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
2条答案
按热度按时间lyfkaqu11#
你必须创建每一个你想创建的树节点。
或者,您可以创建一个树节点构造函数,它接受一个整数数组并适当地创建一个树节点。
vsnjm48y2#
希望这会有帮助