二叉树奇怪的调试

时间:2016-12-24 23:20:40

标签: java algorithm debugging binary-tree

当我让程序关注二叉树时,我遇到了调试问题。在我的程序的主要方法中,我使用构造函数来创建一个名为root的节点,之后我使用getKey()方法来获取应该引用的“previous”的键“根”。

这是我的代码:

/**
 * BinaryTreeExample from Internet
 * @author xinruchen
 *
 */
import java.util.*;

public class BinaryTreeExample
{
    private static Node root;




    public BinaryTreeExample(int data)
    {
        root = new Node(data);

    }

    public void add(Node parent,Node child, String orientation)
    {
        if(orientation=="left")
        {
           parent.setLeft(child);
        } 
        else if (orientation=="right")
        {
            parent.setRight(child);
        }

    }

    public static void main(String ar[])
    {

        Scanner sc = new Scanner(System.in);
        int times = sc.nextInt();

        BinaryTreeExample l1=new BinaryTreeExample(3);
        Node previous = root;
        String direction = "";
        System.out.println(previous.getKey());
  }
}

class Node {
    private int key;
    private Node left;
    private Node right;


    Node (int key) {
        this.key = key;
        right = null;
        left = null;

    } // constructor

    public void setKey(int key) {
        this.key = key;
    }

    public int getKey() {
        return key;
    }

    public void setLeft(Node l) {
        if (left == null) {
            this.left = l;
        }
        else {
            left.left = l;
        }
    }

    public Node getLeft() {
        return left;
    }

    public void setRight(Node r ) {
        if (right == null) {
            this.right = r;
        }
        else {
            right.right = r;
        }
    }

    public Node getRight() {
        return right;
    }

}

如果所有事情都按预期进行,则应输出“3”,但不会输出任何内容。我检查了我的代码并按照我的代码流程仍然无法找到问题所在。请帮帮我,谢谢!

2 个答案:

答案 0 :(得分:0)

启动程序时,它将在指令int times = sc.nextInt();处等待用户输入。

提供输入后,程序会按预期打印3

答案 1 :(得分:0)

您不应该使用扫描仪,因为您已将该值硬编码为3并且您没有使用时间或者您应该像这样使用

        System.out.println("Enter the value");
        Scanner sc = new Scanner(System.in);
        int times = sc.nextInt();

        BinaryTreeExample l1=new BinaryTreeExample(times);

无论何时请求输入,都应该给出提示。虽然这不是强制要求,但它会避免像程序等待输入时的混乱