数据结构学习笔记4.3--遍历树

遍历树是根据一种特定的顺序访问树的每一个节点。这个过程相对比较慢,所以一般不常用。

常用的遍历方法有三种,分别是:前序遍历,中序遍历,后序遍历。其中最常用,也最简单的是中序遍历。

遍历的最简单方法是用敌对调用,这里我们将三种排序方法都使用递归调用。

 

image

 

1.中序遍历

二叉树会使所有的节点按关键字值升序被访问到。如果需要创建有序的数据序列,使用中序遍历将会非常简单。

方法:

1.调用自身来遍历节点的左子树。

2.访问这个节点。

3.调用自身来遍历节点的右子树。

 

代码:

    /**
     * 中序遍历
     * @param localRoot 节点值
     */
    private void inOrder(Node localRoot)
    {
        if (localRoot != null)
        {
            inOrder(localRoot.leftChild);
            System.out.print(localRoot.iData + " ");
            inOrder(localRoot.rightChild);
        }
    }

执行结果:G D H B E I A C J F

 

投影法:

image

结果:G D H B E I A C J F

 

2.前序遍历

前序遍历多用于算术运算中表达式的表示方法。

方法:

1.访问这个节点。

2.调用自身遍历该节点的左子树。

3.调用自身遍历该节点的右子树。

 

代码:

     /**
     * 前序遍历
     * @param localRoot 节点值
     */
    private void preOrder(Node localRoot)
    {
        if (localRoot != null)
        {
            System.out.print(localRoot.iData + " ");
            preOrder(localRoot.leftChild);
            preOrder(localRoot.rightChild);
        }
    }

执行结果:A B D G E I C F G

 

3.后序遍历

方法:

1.调用自身遍历该节点的左子树。

2.调用自身遍历该节点的右子树。

3.访问这个节点。

 

代码:

    /**
     * 后续遍历
     * @param localRoot 节点值
     */
    private void postOrder(Node localRoot)
    {
        if (localRoot != null)
        {
            postOrder(localRoot.leftChild);
            postOrder(localRoot.rightChild);
            System.out.print(localRoot.iData + " ");
        }
    }

执行结果:G H D I E B J F C A

 

总结:

记忆遍历的三种方法,根据”访问这个节点”所在的位置确定。

如果在前面,则是前序遍历。

如果在中间,则是中序遍历。

如果在后面,则是后序遍历。

posted on 2014-02-11 20:39  winlrou  阅读(319)  评论(0编辑  收藏  举报