java - 打印二叉搜索树中序遍历

标签 java recursion binary-search-tree treenode

我创建了一个程序,将用户输入的整数存储在二叉搜索树中,并且我有用于预、后和中序遍历的递归函数,运行良好。我想做的是按顺序遍历树,并且在每个节点处我想打印存储在那里的数字以及其左侧和右侧节点中的数字,或者如果该节点是叶节点。 假设用户输入整数 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 );

  }

最佳答案

很可能,您的递归会将您带到树的底层(您的叶子),并且当您尝试调用时

node.left.data

这是一个 null => NullPointerException。

正如其他人所说,只需让递归来完成工作即可。

private void inorderHelper( TreeNode node )
  {
      if ( node == null )
        return;

     inorderHelper( node.left );
     System.out.print( "Node data: " + node.data);
     inorderHelper( node.right );

  }

关于java - 打印二叉搜索树中序遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699798/

相关文章:

java - 我应该从多个线程访问(而不是更改)一个对象吗?

java - KassandraMRHelper 的 maven 包 org.apache.thrift.scheme 不存在

Android Activity 返回导航递归循环问题

java - 递归字符串连接

PHP:如何在数组中填充目录结构

algorithm - 在不使用父指针的情况下找到后继者

java - 如何创建项目的属性列表?链表、数组列表、文件?

java - Spring Converter 复杂对象

c - 如何在c中按级别打印二叉树中的元素

java - 2 个二叉搜索树的交集