算法复习 -- 二叉树遍历

遍历二叉树的关键词

访问和顺序

前序遍历

//前序遍历 访问根节点 前序遍历左子树 再前序遍历右子树
    public void beforeOrder(Node root){
        Node current = root;
        if(current!=null){
            System.out.println(current.value);
            inOrder(current.leftNode);
            inOrder(current.rightNode);
        }
    }

 

 

中序遍历

//中序遍历
    public void inOrder(Node root){
        /*根节点作为参数,初始化时这个节点是根。
        1 调用自身来遍历节点的左子树
        2 访问这个节点
        3 调用自身来遍历节点的右子树*/
        Node current = root;
         
        if(current!=null){
            inOrder(current.leftNode);
            System.out.println(current.value);
            inOrder(current.rightNode);
        }
    }

 

后序遍历

//后序遍历
    public void afterOrder(Node root){
        Node current = root;
        if(current!=null){//// 从左到右先叶子后节点的方式便利访问左右子树 最后访问根节点
            inOrder(current.leftNode);
            inOrder(current.rightNode);
            System.out.println(current.value);
        }
    }

小练习

已知一颗二叉树 求 后序遍历结果是什么?

前序遍历结果:ABCDEF

==> A是根节点

中序遍历序列:CBAEDF

==> CB是左子树 EDF是右子树

如下

 

 

我们再看前序中的C和B,

 

懒得写了 见 P185 <<大话数据结构>>

 

posted @ 2012-12-15 06:16  王超_cc  阅读(201)  评论(0编辑  收藏  举报