leetcode二叉树相关模板

复制代码
package com.leetcode102;

import java.util.List;

public class Main {
    public static void main(String[] args) {
        Integer[] arr = {3, 9, 20, null, null, 15, 7};
        TreeNode tree = createTree(arr, 0);
        printPreOrder(tree);
        System.out.println();
        printMidOrder(tree);
        System.out.println();
        printAfterOrder(tree);
        System.out.println();
    }

    /**
     * 前序遍历
     */
    public static void printPreOrder(TreeNode tree) {
        if (tree != null) {
            System.out.print(tree.val == null ? "" : tree.val + " ");
            printPreOrder(tree.left);
            printPreOrder(tree.right);
        }
    }

    /**
     * 中序遍历
     */
    public static void printMidOrder(TreeNode tree) {
        if (tree != null) {
            printMidOrder(tree.left);
            System.out.print(tree.val == null ? "" : tree.val + " ");
            printMidOrder(tree.right);
        }
    }

    /**
     * 后序遍历
     */
    public static void printAfterOrder(TreeNode tree) {
        if (tree != null) {
            printAfterOrder(tree.left);
            printAfterOrder(tree.right);
            System.out.print(tree.val == null ? "" : tree.val + " ");
        }
    }

    /**
     * 创建一个二叉树
     * ----3
     * -9     20
     * -----15  17
     */
    public static TreeNode createTree(Integer[] arr, int index) {

        TreeNode root = null;
        if (index < arr.length) {
            root = new TreeNode(arr[index]);
            root.left = createTree(arr, 2 * index + 1);
            root.right = createTree(arr, 2 * index + 2);
        }

        return root;
    }
}

class TreeNode {
    Integer val;
    TreeNode left;
    TreeNode right;

    TreeNode() {
    }

    TreeNode(Integer val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
相关推荐
zhangjw3430 分钟前
第47篇:Java综合实战:电商秒杀系统(高并发场景)
java·开发语言
土司大王40 分钟前
LeetCode hot100 回溯专题总结:Java 通用模板、决策树模型
java·算法·leetcode·决策树
2601_962218611 小时前
万象生鲜系统订单全生命周期状态同步技术实现业务可视
大数据·数据库·人工智能·python·算法
Wang's Blog1 小时前
Java框架快速入门:Spring Security+OAuth2之用户注册与唯一性校验实现
java·数据库·spring
那年窗外下的雪.1 小时前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
Wang's Blog1 小时前
Java框架快速入门: Spring Security+OAuth2之多因子认证与TOTP实战
java·spring·ui
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
Java面试题汇总
java·开发语言
wzdark2 小时前
基于启发式搜索的最优路径规划算法研究4
算法
l1t2 小时前
用superpi、tinypi、tpi等工具计算圆周率的比较
c语言·算法
a187927218312 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表