美文网首页
Java针对二叉树的几种遍历方式

Java针对二叉树的几种遍历方式

作者: P_ursuit | 来源:发表于2018-07-03 17:36 被阅读0次

Java针对二叉树的几种遍历方式

package binarytree.create;

import java.util.ArrayDeque;
import java.util.Queue;

/**
 * 二叉树的创建与遍历
 * @date 2018-07-02 14:34:32
 */
public class BinaryTreeCreate {


    public static void main(String[] args) {
        TreeNode node = createNode();
        // 遍历
        // 二叉树前序遍历
        preorder(node);
        // 中序遍历
        centOrder(node);
        // 后序遍历
        followOrder(node);
        // 层次遍历
        levelOrder(node);
    }

    /**
     *           1
     *         /   \
     *        2     3
     *       / \   / \
     *      4  5  6   7
     * @return
     */
    private static TreeNode createNode() {
        TreeNode root = new TreeNode(1); // 树根
        TreeNode nleft = new TreeNode(2); // 左节点
        TreeNode nright = new TreeNode(3); // 右节点

        TreeNode lnleft = new TreeNode(4); // 左节点
        TreeNode lnright = new TreeNode(5); // 右节点
        nleft.setLeftNode(lnleft);
        nleft.setRightNode(lnright);

        TreeNode rnleft = new TreeNode(6); // 左节点
        TreeNode rnright = new TreeNode(7); // 右节点
        nright.setLeftNode(rnleft);
        nright.setRightNode(rnright);

        root.setLeftNode(nleft);
        root.setRightNode(nright);

        return root;
    }


    /**
     * 二叉树前序遍历
     * 根节点 -> 左子树 -> 右子树
     * @param root
     */
    public static void preorder(TreeNode root) {
        if (root != null) {
            System.out.println(root.getVal());
            preorder(root.getLeftNode());
            preorder(root.getRightNode());
        }
    }

    /**
     * 二叉树中序遍历
     * 左子树 -> 根节点 -> 右子树
     * @param root
     */
    public static void centOrder(TreeNode root) {
        if (root != null) {
            centOrder(root.getLeftNode());
            System.out.println(root.getVal());
            centOrder(root.getRightNode());
        }
    }

    /**
     * 二叉树后序遍历
     * 左字树 -> 右子树 -> 根节点
     * @param root
     */
    public static void followOrder(TreeNode root) {
        if (root != null) {
            followOrder(root.getLeftNode());
            followOrder(root.getRightNode());
            System.out.println(root.getVal());
        }
    }

    /**
     * 二叉树层次遍历
     * 从上至下->从左到右
     * @param root
     */
    public static  void levelOrder(TreeNode root){

        Queue<TreeNode> quue = new ArrayDeque();
        quue.offer(root); // 入队
        while (!quue.isEmpty()) {
            TreeNode node = quue.poll(); // 出队
            System.out.println(node.getVal());
            if (node.getLeftNode() != null) {
                quue.offer(node.getLeftNode());
            }
            if (node.getRightNode() != null) {
                quue.offer(node.getRightNode());
            }
        }
    }
}

相关文章

  • Java针对二叉树的几种遍历方式

    Java针对二叉树的几种遍历方式

  • 数据结构(三):二叉树遍历

    遍历方式 二叉树的常见遍历方式如下几种: 前序遍历: 访问根节点,前序遍历方式访问左子树,前序遍历方式访问右子树;...

  • 二叉树(python实现)

    一、二叉树的几种遍历方式 1、前序遍历(根——>左——>右) 2、中序遍历(左——>根——>右) 3、后续遍历(左...

  • 树的几种遍历方式

    主要记录一下对于二叉树,进行遍历的几种方式,包括: 前序遍历 中序遍历 后序遍历 深度优先遍历 广度优先遍历 我们...

  • day1

    oc对象读取属性值的几种方法 遍历类所有属性名称 遍历集合的几种方式 协议(Protocol)类似于java的in...

  • JAVA相关文章索引(2)

    1.JAVA基本常识 java 中的几种注释方式 菜鸟轻松搞定Java集合HashMap遍历编程 StringBu...

  • 二叉树的遍历

    二叉树的遍历 二叉树常用的遍历方式有:前序遍历、中序遍历、后序遍历、层序遍历四种遍历方式,不同的遍历算法,其思想略...

  • Java中用递归和迭代实现二叉树的中序( InOrder )遍历

    与数组和链表不同,二叉树有几种遍历方式。遍历算法大致分为深度优先和广度优先遍历算法,这取决于算法实际如何工作。顾名...

  • Java中的Iterable与Iterator详解

    在Java中,我们可以对List集合进行如下几种方式的遍历: List list =newArrayList<>(...

  • 2020-09-23

    二叉树前序遍历几种写法 递归 非递归

网友评论

      本文标题:Java针对二叉树的几种遍历方式

      本文链接:https://www.haomeiwen.com/subject/zdejuftx.html