首页 > 解决方案 > 我的程序只返回树的根而不是打印整个树

问题描述

public Queue<Integer> store_inorder(node n){
    Queue<Integer> q=new LinkedList<>();
    if(n.left!=null)store_inorder(n.left);
    q.add(n.data);
    if(n.right!=null)store_inorder(n.right);
    return q;
}

我一直在尝试将树的中序表达式存储到队列中,但是我的程序不起作用。我的程序有什么问题?

标签: javatree

解决方案


基本上,当你使用 时Queue<Integer> q=new LinkedList<>();,你会重新实例化你的变量 q。所以每次你调用你的方法,你都会得到一个新的 empty LinkedList

要解决此问题,您只需存储q在方法之外,如下所示:

Queue<Integer> q = new LinkedList<>();

public Queue<Integer> store_inorder(node n){
      if(n.left!=null)
          store_inorder(n.left);
      q.add(n.data);
      if(n.right!=null)
          store_inorder(n.right);
      return q;
}

要详细了解它的行为方式,我建议您研究一下java 中变量的范围


推荐阅读