二叉树的前中后序遍历

        其实对于这个问题,很多人都可以说清楚,前中后对应的其实就是获取根节点的顺序来定义的,然后从左往右遍历(即使是后序遍历也是一样,先左后右然后是root)。

        然后前序遍历和中序遍历都有一个模型的图片的,这个让我copy一下百度百科的图片。。

前序遍历,一条不间断的流水线,很好辨识


中序遍历,这个还有一个说法是底部映射(投影法)


这个没什么多说的,记住这个结果 DEBFCA  左右上,只要有子节点,一定不要遍历root节点

最后代码实现,建议使用递归,因为简单好记。。笑cry。

//前序遍历递归的方式

    public void pre(TreeNode root){

        if(null!=root){

        //前序就是先答应root节点,然后左右递归

            System.out.print(root.getData()+"\t");

            pre(root.getLeft());

            pre(root.getRight());

        }

    }

    //中序遍历采用递归的方式

    public void mid(TreeNode root){

        if(null!=root){

            mid(root.getLeft());

        // 中序遍历就是左边递归结束,然后直接打印,然后递归右边

            System.out.print(root.getData()+"\t");

            mid(root.getRight());

        }

    }

  //后序遍历采用递归的方式

    public void post(TreeNode root){

        if(root!=null){

            post(root.getLeft());

            post(root.getRight());

        //后序就是左递归之后右递归,然后最后打印

            System.out.print(root.getData()+"\t");

        }

    }

速记:前中后序的遍历就是将打印的操作放在前中后即可,it is so easy。。还有记不住的?不会了吧,因为其与代码完全一样。。。。

你可能感兴趣的:(二叉树的前中后序遍历)