java - 我的程序只返回树的根而不是打印整个树
问题描述
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;
}
我一直在尝试将树的中序表达式存储到队列中,但是我的程序不起作用。我的程序有什么问题?
解决方案
基本上,当你使用 时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 中变量的范围。
推荐阅读
- c++ - 使用opengl用中点定理渲染圆我做错了什么?
- jquery - 逐个添加点击每个孩子
- c++ - 在类中设置 Arduino 字符串值
- string - 传递参数时批量使用“=”作为字符串
- php - php - 无法使用 PDO 连接到数据库
- python - int 对象在输入第一个输入的数量后不可迭代
- c++ - 使用 pthreds 在 C++ 中进行线程通信
- php - Htaccess 允许给定引用者的文件访问不起作用
- python - 为什么 Django 不迁移我更改的模型?
- javascript - 使用 stringify 和 replace 将 JSON 对象字符串化,其属性名称为大写