本来打算把递归非递归的一起写出来,但是发现一起放出来篇幅会偏长,所以我会在下次放出非递归版。

基本概念

  • 前序遍历:先访问根节点,再访问左子节点,最后访问右子节点
  • 中序遍历:先访问左子节点,再访问跟节点,最后访问右子节点
  • 后序遍历:先访问左子节点,再访问右子节点,最好访问根节点

  • 前序:1 2 4 5 3 6 7
  • 中序:4 2 5 1 6 3 7
  • 后序:4 5 2 6 7 3 1

前序遍历

public static void order1(Node root)
{
    if (root != null)
    {
        System.out.print(root.data + " ");
        order1(root.LNode);
        order1(root.RNode);
    }
}

中序遍历

public static void order1(Node root)
{
    if (root != null)
    {
        order1(root.LNode);
        System.out.print(root.data + " ");
        order1(root.RNode);
     }
 }

后序遍历

public static void order1(Node root)
{
    if (root != null)
    {
        order1(root.RNode);
        order1(root.LNode);
        System.out.print(root.data + " ");
    }
}