当前位置: 首页 > 知识库问答 >
问题:

打印二叉搜索树顺序遍历

邓深
2023-03-14
 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 );

  }

共有1个答案

汪兴为
2023-03-14

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

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 );

  }
 类似资料:
  • 编写一个函数,如果给定的二叉搜索树包含给定的值,则返回1,否则返回0。 例如,对于以下树: N1(值:1,左:null,右:null) n2(值:2,左:n1,右:n3) N3(值:3,左:null,右:null) 对contains(&n2,3)的调用应返回1,因为根位于n2的树包含编号3。 函数应该返回1,然而,它返回0或者根本不返回。

  • 我已经为我的二叉搜索树做了4次不同的遍历。我被困在最后一个,这是水平顺序遍历,我不能得到,似乎找到如何做它正确。 主要的问题是我不知道如何一次只搜索一个层次,我只知道如何搜索整个左或整个右子树。

  • 对于二叉搜索树:7为根,1为左子,10为右子。 我试过调试这个函数,看看它是如何工作的,但我似乎不能理解一件事。函数检查并看到1的左子项和右子项都为空后,它就移动到节点10,然后检查右子项是否为空。有人能解释一下递归模式,以及为什么方法在初始检查节点1后没有退出。

  • 我想以这种格式打印二叉查找树: 我想我必须获得树的深度,然后,对于每个级别,在每个元素前后打印一些空格。 我不知道如何继续。 节点类:

  • NowCoder 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。假设输入的数组的任意两个数字都互不相同。 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 解题思路 // java public boolean VerifySquenceOfBST(int[] sequence) { if (sequence == null || sequence.l

  • 下面是一个二叉查找树,它有一个根节点、一个左节点和一个右节点。代码有效,但我想显示这个二叉查找树,这样我就可以看到图层中的每个节点…这是代码…