如何创建一个二叉树 [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);             
         }
     }
}