本来打算把递归非递归的一起写出来,但是发现一起放出来篇幅会偏长,所以我会在下次放出非递归版。
基本概念
- 前序遍历:先访问根节点,再访问左子节点,最后访问右子节点
- 中序遍历:先访问左子节点,再访问跟节点,最后访问右子节点
- 后序遍历:先访问左子节点,再访问右子节点,最好访问根节点
- 前序: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 + " ");
}
}