我已经创建了一个程序,它将二进制搜索树中用户输入的整数存储起来,并且具有可以正常工作的前置,后置和有序遍历的递归函数。我想要做的是按顺序遍历树,并且在每个节点上我想打印存储在那里的数字以及节点中左边和右边的数字,或者节点是叶节点。 假设用户进入整数1,4,11和12我希望我的输出看起来像:打印二进制搜索树按顺序遍历
1:右子树:12
4:右子树:11
11:叶子节点
12:左子树:4 等
这里是我使用该函数的代码,当我跑我得到一个空指针异常的程序。
public synchronized void inorderTraversal()
{ inorderHelper(root); }
//递归方法序遍历
private void inorderHelper(TreeNode node)
{
if (node == null)
return;
inorderHelper(node.left);
System.out.print(node.data + ": Left Subtree " + node.left.data +": Right Subtree " + node.right.data);
inorderHelper(node.right);
}
你的堆栈跟踪在哪里? – reto
当您调用'inorderHelper(node.left)'和'inorderHelper(node.right)'时,您正在打印'node.left.data'和'node.right.data'。 – Kevin