此代码应该以横向顺序从 BST 返回值。如何解决?

问题描述 投票:0回答:1

代码如下:

import java.util.*;
   

class Node 
{
    int value;
    Node left, right;

    public Node(int value)
    {
        this.value = value;
        left = right = null;
    }
}

class BinaryTree 
{
    Node root;

    public BinaryTree() 
    {
        root = null;
    }

    void printLevelOrder() 
    {
        if (root == null)
            return;

        Queue<Node> queue = new LinkedList<>();
        queue.add(root);

        while (!queue.isEmpty()) 
        {
            int levelSize = queue.size();

            for (int i = 0; i < levelSize; i++) 
            {
                Node node = queue.poll();
                System.out.print(node.value + " ");

                if (node.left != null)
                    queue.add(node.left);

                if (node.right != null)
                    queue.add(node.right);
            }

            System.out.println();
        }
    }
}
    public static void main(String[] args) 
    {
        BinaryTree tree = new BinaryTree();

        tree.root = new Node(4);
        tree.root.left = new Node(2);
        tree.root.right = new Node(6);
        tree.root.left.left = new Node(1);
        tree.root.left.right = new Node(3);
        tree.root.right.left = new Node(5);
        tree.root.right.right = new Node(7);

        System.out.println("Level order traversal of binary tree is: ");

        tree.printLevelOrder();
    }

main 代码中的第一行是产生“no enclosing instance for BinaryTree”错误的原因。

我尝试在主类之外创建不同的实例,但没有成功。我对在这里需要做什么来解决这个问题感到有点困惑。

java data-structures binary-tree
1个回答
0
投票

请先使用IDE。将文件另存为 BinaryTree.java。 始终建议对类使用 public 访问说明符来运行它。喜欢

public class BinaryTree{...}

import java.util.*;

class Node {
    int value;
    Node left, right;

    public Node(int value) {
        this.value = value;
        left = right = null;
    } }

public class BinaryTree {
    Node root;

    public BinaryTree() {
        root = null;
    }

    void printLevelOrder() {
        if (root == null)
            return;

        Queue<Node> queue = new LinkedList<>();
        queue.add(root);

        while (!queue.isEmpty()) {
            int levelSize = queue.size();

            for (int i = 0; i < levelSize; i++) {
                Node node = queue.poll();
                System.out.print(node.value + " ");

                if (node.left != null)
                    queue.add(node.left);

                if (node.right != null)
                    queue.add(node.right);
            }

            System.out.println();
        }
    }

    public static void main(String[] args) {
        BinaryTree tree = new BinaryTree();

        tree.root = new Node(4);
        tree.root.left = new Node(2);
        tree.root.right = new Node(6);
        tree.root.left.left = new Node(1);
        tree.root.left.right = new Node(3);
        tree.root.right.left = new Node(5);
        tree.root.right.right = new Node(7);

        System.out.println("Level order traversal of binary tree is: ");

        tree.printLevelOrder();
    } 
}

输出应如下所示:

Level order traversal of binary tree is: 
4  
2 6 
1 3 5 7
© www.soinside.com 2019 - 2024. All rights reserved.