二叉树的前中后序遍历

        其实对于这个问题,很多人都可以说清楚,前中后对应的其实就是获取根节点的顺序来定义的,然后从左往右遍历(即使是后序遍历也是一样,先左后右然后是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。。还有记不住的?不会了吧,因为其与代码完全一样。。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容