算法练习——实现二叉树前序、中序和后序遍历

实现二叉树前序、中序和后序遍历:


题目:

实现二叉树前序、中序和后序遍历
提示:使用递归实现


示例:

示例:

输入:
/*     1
     2   3
    4   5 6
*/
前序输出:1 2 4 3 5 6
中序输出:4 2 1 5 3 6
后序输出:4 2 5 6 3 1

分析:

这道题其实不完全算是算法,其实就是二叉树的三种遍历方法:
前序遍历:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。(根----->左------->右
中序遍历:若二叉树为空,则空操作返回,否则从根结点开始(注意并不是先访问根结点),中序遍历根结点的左子树,然后访问根结点,最后遍历右子树。(左----->根------->右
后序遍历:若二叉树为空,则空操作返回,否则从左到右先叶子结点后结点的方式遍历访问左右子树,最后访问根结点。(左------>右------>根
所以,这道题只是练习如何使用代码来实现前中后序遍历。

这里,先简单把二叉树建立出来:

public class TreeNode {
    int val;//节点值
    TreeNode left;//左子树地址
    TreeNode right;//右子树地址
    TreeNode( int x){
        val = x;//节点存放的数值
    }
}

建立与示例一样的树:

/*     1
     2   3
    4   5 6
*/
TreeNode treeNode = new TreeNode(1);
treeNode.left = new TreeNode(2);
treeNode.left.left = new TreeNode(4);
treeNode.right = new TreeNode(3);
treeNode.right.left = new TreeNode(5);
treeNode.right.right = new TreeNode(6);

然后就是将二叉树进行遍历,记住前中后序遍历的要求即可(高亮标出来了)


代码:

先看上面的分析!自己理解思考一下,不要急着看代码!

前序遍历:

	/**
     * 二叉树前序遍历   根-> 左-> 右
     * @param node    二叉树节点
     */
    public void preOrderTraversal(TreeNode node) {
        if (node == null){
            return;
        }

        System.out.print(node.val + " ");//根输出
        preOrderTraversal(node.left);//左子树
        preOrderTraversal(node.right);//右子树
    }

中序遍历:

	/**
     * 二叉树中序遍历   左-> 根-> 右
     * @param node   二叉树节点
     */
    public void inOrderTraveral(TreeNode node){
        if(node == null){
            return;
        }
        inOrderTraveral(node.left);//左子树
        System.out.print(node.val + " ");//根输出
        inOrderTraveral(node.right);//右子树
    }

后序遍历:

	/**
     * 二叉树后序遍历   左-> 右-> 根
     * @param node    二叉树节点
     */
    public void postOrderTraveral(TreeNode node){
        if(node == null){
            return;
        }
        postOrderTraveral(node.left);
        postOrderTraveral(node.right);
        System.out.print(node.val + " ");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值