java实现二叉树前序、中序、后续遍历

本文介绍了如何使用Java实现二叉树的前序、中序和后序遍历,包括递归和非递归方法。详细阐述了遍历的思路,并给出了具体的操作流程和输出结果。
摘要由CSDN通过智能技术生成

1、简介 

二叉树遍历即将二叉树中所有的节点遍历一遍,根据节点遍历的顺序的不同,分为前序遍历,中序遍历。下面这个图为要遍历的二叉树(图来自参考文献2)。

2、 代码流程

 每种遍历方式中,包含两种,递归方法和非递归方法。

遍历的主要流程:

 

2.1 前序遍历

      前序遍历思路:

  1. 访问根节点
  2. 前序遍历左子树
  3. 前序遍历右子树
/**
     * 前序遍历,递归方法.
     * @param root 根节点
     */
    public void preOrder(Node root){
        if (root!=null){
            printNode(root); //访问根节点
            preOrder(root.getLeftNode());  //前序遍历左子树
            preOrder(root.getRightNode()); //前序遍历右子树
        }
    }

    /**
     * 前序遍历,非递归方法.
     * @param root 根节点
     */
    public void preOrder_stack(Node root){
        Stack<Node> stack = new Stack<>();
        while(root!=null || !stack.isEmpty()){
            if(root!=null){
                printNode(root); //访问根节点
                stack.push(root); //入栈
                root = root.getLeftNode(); //访问左子树
            }else{
                root = stack.pop(); //回溯至父节点
                root = root.getRightNode(); //访问右子树
            }
        }
        System.out.println();
    }

输出结果为: 

前序遍历
6  3  1  2  5  4  9  7  8 

2.2 中序遍历

     中序遍历思路:

  1. 中序遍历左子树
  2. 访问根节点
  3. 中序遍历
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值