java中二叉树的遍历实现

问题描述 投票:0回答:1
public void inOrder(Node1 node)  
{  
    if(node != null)  
    {  
        inOrder(node.left);  
        node.displayData();  
        inOrder(node.right);  
    }  
}  

public void preOrder(Node1 node)  
{  
    if(node =! null){  
        node.displayData();  
        preOrder(node.left);             
        preOrder(node.right);  
    }  
}  

public void postOrder(Node1 node)  
{  
    if(node != null)  
    {  
        postOrder(node.left);  
        postOrder(node.right);  
        node.displayData();            
    }  
}  
public static void main(String[] agrs)   
{  
    traversal bst = new traversel();  
    bst.insert(25);  
    bst,insert(10);  
    bst.insert(15);  
    bst.insert(89);  
    bst.insert(79);  
   
    System.out.println("Inorder traversal of binary tree");  
    bst.inOrder(bst.root1);  
    System.out.println();  
    System.out.println("Preorder traversal of binary tree");  
    bst.preOrder(bst.root1);  
    System.out.println();  
    System.out.println("Postorder traversal of binary tree");  
    bst.postOrder(bst.root1);  
    System.out.println();  
}  

}

这是我的二叉树预序、后序和顺序代码。在此代码中,输出不可见,并且显示错误。我在这里找不到错误。 有人可以帮我解决这个问题吗?

java binary-tree inorder preorder postorder
1个回答
0
投票

在给出答案之前我想知道这些评论是正确的。给出运行代码时显示的错误消息非常重要。它可以帮助更轻松地诊断问题。我相信我发现了错误的问题,但如果没有所说的错误消息,我可能会遵循错误的线索。

问题可能源于这样一个事实:如果节点为空,则所有遍历方法都没有返回方法。目前,您只是检查当前节点是否为空,然后遍历到下一个节点,但没有办法返回到前一个节点以继续树。

带返回值的前序遍历示例如下:

  public static void printPreorder(Node node)
  {
    if (node == null)
      return;
 
    // Visit node
    System.out.print(node.data + " ");
 
    // Traverse left subtree
    printPreorder(node.left);
 
    // Traverse right subtree
    printPreorder(node.right);
  }

这将允许节点返回到前一个节点并继续沿着树的其余部分向下移动。

下面的链接提供了如何正确编写二叉树相应遍历方法中所有返回值的示例。我之前的例子来自上述链接。 https://www.geeksforgeeks.org/binary-search-tree-traversal-inorder-preorder-post-order/

© www.soinside.com 2019 - 2024. All rights reserved.