zoukankan      html  css  js  c++  java
  • 二叉树的前序遍历、中序遍历、后序遍历、层序遍历

    1.节点定义
    public class TreeNode {
        public int val;
        public TreeNode left;
        public TreeNode right;
    
    
        public TreeNode(int val) {
            this.val = val;
        }
    
        public TreeNode(int val, TreeNode left, TreeNode right) {
            this.val = val;
            this.left = left;
            this.right = right;
        }
    }
    
    2.中序遍历

    左-根-右

    public static void printTreeInOrder(TreeNode root) {
        if (root == null) {
            return;
        }
        if (root.left != null) {
            printTreeInOrder(root.left);
        }
        System.out.print(root.val + "\t");
        if (root.right != null) {
            printTreeInOrder(root.right);
        }
    }
    
    3.先序遍历

    根-左-右

    public static void printTreePreOrder(TreeNode root) {
        if (root == null) {
            return;
        }
        System.out.print(root.val + "\t");
        if (root.left != null) {
            printTreePreOrder(root.left);
        }
        if (root.right != null) {
            printTreePreOrder(root.right);
        }
    }
    
    4.后序遍历

    左-右-根

    public static void printTreePostOrder(TreeNode root) {
        if (root == null) {
            return;
        }
        if (root.left != null) {
            printTreePostOrder(root.left);
        }
        if (root.right != null) {
            printTreePostOrder(root.right);
        }
        System.out.print(root.val + "\t");
    
    }
    
    5.层序遍历

    利用队列

    public static void printTreeLevelOrder(TreeNode root) {
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode current = queue.poll();
            System.out.print(current.val + "\t");
            if (current.left != null) {
                queue.offer(current.left);
            }
            if (current.right != null) {
                queue.offer(current.right);
            }
        }
        System.out.println();
    }
    
  • 相关阅读:
    Redis Cluster笔记
    http协议之 COOKIE
    lor框架代码分析
    PHP--SPL扩展学习笔记
    lua协程----ngx-lua线程学习笔记
    设计模式
    eclipse中使用maven创建springMVC项目
    一般处理程序里使用session对象
    .Dot NET Cored简介
    Spring 依赖注入(基本注入和自动适配注入)
  • 原文地址:https://www.cnblogs.com/worldline/p/15725598.html
Copyright © 2011-2022 走看看