如何创建一个二叉树 [3,9,20,null,null,15,7] 以便我可以将它传递给 levelOrder 方法?
How do I create a binary tree [3,9,20,null,null,15,7] so that I can pass it into levelOrder Method?
我正在尝试进行层序遍历并希望传递此二叉树
[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; }
}
您必须创建每个要创建的 TreeNode。
TreeNode bt = new TreeNode(3);
TreeNode a = new TreeNode(9);
TreeNode b = new TreeNode(20);
TreeNode c = new TreeNode(15);
TreeNode d = new TreeNode(7);
bt.left = a;
bt.right = b;
bt.right.left = c;
bt.right.right = d;
或者,您可以制作一个 TreeNode 构造函数,它接受一个整数数组并适当地创建一个 TreeNode。
希望,这会有所帮助
public class TreeTest
{
public static void main(String[] args)
{
TreeNode tree = new TreeNode( 3 );
int[] nums = {9,20,5,8,15,7};
for(int i : nums ) {
tree.addNode( i );
}
System.out.println(TreeTest.levelOrder(tree));
}
public static 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;
}
}
class TreeNode
{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x)
{
val = x;
this.left = null;
this.right = null;
}
public void addNode(int num)
{
if (num < this.val)
{
if (this.left != null)
this.left.addNode(num);
else
this.left = new TreeNode(num);
}
else
{
if (this.right != null)
this.right.addNode(num);
else
this.right = new TreeNode(num);
}
}
}
我正在尝试进行层序遍历并希望传递此二叉树
[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; }
}
您必须创建每个要创建的 TreeNode。
TreeNode bt = new TreeNode(3);
TreeNode a = new TreeNode(9);
TreeNode b = new TreeNode(20);
TreeNode c = new TreeNode(15);
TreeNode d = new TreeNode(7);
bt.left = a;
bt.right = b;
bt.right.left = c;
bt.right.right = d;
或者,您可以制作一个 TreeNode 构造函数,它接受一个整数数组并适当地创建一个 TreeNode。
希望,这会有所帮助
public class TreeTest
{
public static void main(String[] args)
{
TreeNode tree = new TreeNode( 3 );
int[] nums = {9,20,5,8,15,7};
for(int i : nums ) {
tree.addNode( i );
}
System.out.println(TreeTest.levelOrder(tree));
}
public static 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;
}
}
class TreeNode
{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x)
{
val = x;
this.left = null;
this.right = null;
}
public void addNode(int num)
{
if (num < this.val)
{
if (this.left != null)
this.left.addNode(num);
else
this.left = new TreeNode(num);
}
else
{
if (this.right != null)
this.right.addNode(num);
else
this.right = new TreeNode(num);
}
}
}