前序遍历中序遍历后序遍历层次遍历

Posted wylwyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前序遍历中序遍历后序遍历层次遍历相关的知识,希望对你有一定的参考价值。

一、概念

1、前序遍历

  1. 先根节点
  2. 左节点
  3. 右节点

2、中序遍历:

  1. 左节点
  2. 根节点
  3. 右节点

3、后序遍历

  1. 左节点
  2. 右节点
  3. 根节点

4、层次遍历

从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印

 

二、代码

2.1 首先定义TreeNode

public class TreeNode {
    public int value;
    public TreeNode left;
    public TreeNode right;
}

  

2.2 代码

import java.util.*;

public class Solution {

    public static preOrderTravel(TreeNode root) {
        if(root == null) {
            return;
        }

        System.out.println(root.val);
        if(root.left != null) {
            preOrderTravel(root.left);
        }

        if(root.right != null) {
            preOrderTravel(root.right);
        }
    }

    public static void inOrderTravel(TreeNode root) {
        if(root ==  null) {
            return;
        }

        if(root.left != null) {
            inOrderTravel(root.left);
        }

        System.out.println(root.val);

        if(root.right != null) {
            inOrderTravel(root.right);
        }
    }

    public static void postOrderTravel(TreeNode root) {
        if(root == null) {
            return;
        }

        if(root.left != null) {
            postOrderTravel(root.left);
        }

        if(root.right != null) {
            postOrderTravel(root.right);
        }

        System.out.println(root.val);
    }

    public static void fromTopToBottom(TreeNode root) {
        if(root == null) {
            return;
        }

        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);

        while(queue.isEmpty()) {
            // 移除并返问队列头部的元素    如果队列为空,则返回null
            TreeNode node = queue.poll();
            
            System.out.println(node.val);

            if(node.left != null) {
                queue.add(node.left);
            }

            if(node.right != null) {
                queue.add(node.right);
            }
        }
    }
}

 

以上是关于前序遍历中序遍历后序遍历层次遍历的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的前序中序后序层次遍历的原理及C++代码实现

二叉树遍历-前序|中序|后序|层次 python实现

树二叉树遍历算法(深度优先广度优先遍历,前序中序后序层次)及Java实现

[无需建树]已知前序或后序和中序遍历结果,输出前序或后序或层次遍历的方法汇总

前序+中序 = 二叉树(先序中序后序层次遍历)

PHP实现二叉树的深度优先遍历(前序中序后序)和广度优先遍历(层次)