【发布时间】:2014-05-07 03:29:38
【问题描述】:
我创建了一个程序,该程序将来自用户输入的整数存储在二叉搜索树中,并且我有用于前、后和中序遍历的递归函数,这些函数运行良好。我要做的是按顺序遍历树,并在每个节点上打印存储在那里的数字以及节点左右两侧的数字,或者该节点是否为叶节点。 假设用户输入整数 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 );
}
【问题讨论】:
-
你的堆栈跟踪在哪里?
-
当您调用
inorderHelper(node.left)和inorderHelper(node.right)时,您正在打印node.left.data和node.right.data。
标签: java recursion binary-search-tree treenode