首页 > 其他分享 >二叉树的简单学习

二叉树的简单学习

时间:2022-11-26 22:01:01浏览次数:48  
标签:node right TreeNode System 学习 二叉树 简单 null data

【概念】

先序: 根、左、右

中序:   左、根、右

后序:   左、右、根

二叉树的简单学习_后序


【代码】

package com.company;
import java.util.*;
import java.util.stream.Collectors;

/**
* 二叉树节点
*/
class TreeNode {
int data;
TreeNode left;
TreeNode right;

TreeNode(int data){
this.data = data;
}

@Override
public String toString() {
return "TreeNode{" +
"data=" + data +
", left=" + left +
", right=" + right +
'}';
}
}

public class threeSum {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>(Arrays.
asList(new Integer[]{3,2,9,null,null,10,null,
null,8,null,4}));
TreeNode treeNode = createBinaryTree(list);
System.out.println(treeNode.toString());
System.out.println("前序:");
preOrderTraveral(treeNode);
System.out.println("\n中序:");
inOrderTraveral(treeNode);
System.out.println("\n后序:");
postOrderTraveral(treeNode);

}


public static TreeNode createBinaryTree(LinkedList<Integer> inputList){
TreeNode node = null;

if(inputList == null || inputList.isEmpty()) {
return null;
}

Integer data = inputList.removeFirst();
if(data != null) {
node = new TreeNode(data);
node.left = createBinaryTree(inputList);
node.right = createBinaryTree(inputList);
}
return node;
}

// 先序: 根 左 右
public static void preOrderTraveral(TreeNode node) {
if (node == null) {
return;
}

System.out.print(node.data + " ");
preOrderTraveral(node.left);
preOrderTraveral(node.right);
}

// 中序: 左 根 右
public static void inOrderTraveral(TreeNode node) {
if (node == null) {
return;
}
inOrderTraveral(node.left);
System.out.print(node.data + " ");
inOrderTraveral(node.right);
}

// 后序: 左、右、根
public static void postOrderTraveral(TreeNode node) {
if (node == null) {
return;
}
inOrderTraveral(node.left);
inOrderTraveral(node.right);
System.out.print(node.data + " ");
}

}



标签:node,right,TreeNode,System,学习,二叉树,简单,null,data
From: https://blog.51cto.com/u_13682316/5889184

相关文章

  • Nginx学习
    Nginx一为什么要用Nginx?我们之前有分析过,单台服务器可能会遇到的问题,比如服务器宕机,或者并发用户太多,单台服务器不够等问题,所以需要集群架构,就是将项目部署到多台......
  • 『学习笔记』树状数组
    树状数组其实假如你会线段树,并且比较熟练,你可以直接离开。为什么呢?虽然线段树和树状数组的基础功能是差不多的,但是—树状数组能做到的操作线段树一定能做到,但是线段树......
  • 004 如何学习好ArcObject SDK开发
    1、基于ArcobjectsSDK可以做什么基于ArcobjectsSDK开发,大部分情况下就是做桌面GIS应用程序。AO写的代码是不能直接在Web服务上运行的,但如果你前端是JS,需要后端处理数据,也......
  • 【学习笔记】二叉堆
    二叉堆在谈二叉堆之前,先来叙述一下堆的概念。堆,听起来可能与栈的结构差不多(?),但是堆其实是一棵树。这棵树的根就是堆顶,一般堆顶就是用来维护答案的(e.g.最大值、最小值)。......
  • C语言学习笔记---大小端
    大小端的原理对于一个由2个字节组成的16位整数,在内存中存储这两个字节有两种方法:一种是将低序字节存储在起始地址,这称为小端字节序;另一种方法是将高序字节存储在起始地址,......
  • 2022-2023-1 20221404 《计算机基础与程序设计》第十三周学习总结
    2022-2023-120221404《计算机基础与程序设计》第十三周学习总结作业信息班级链接(2022-2023-1-计算机基础与程序设计)作业要求(2022-2023-1计算机基础与程序设......
  • Java学习七
    一.小结1.使用二维数组来存储表格2.可以使用以下语法来声明二维数组变量:元素类型[][]数组变量3.可以使用以下语法来创建二维数组变量:new元素类型[行的个数][列的......
  • #yyds干货盘点# 动态规划专题:加分二叉树
    1.简述:描述设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第j个节点的分数为di,tree及它的每个子树都有......
  • sonarqube的部署与代码质量简单测试案例(第四周)
    SonarQube介绍1、SonarQube是一个用于代码质量管理的开放平台,通过插件机制实现对不同语言的源代码质量扫描,如go、python、java、python等代码扫描并生成扫描报告,官方网站......
  • 数据结构学习总结
    以下内容来自网课数据结构与算法基础(青岛大学-王卓),结合一些博客作出总结,代码来自网络与一些书籍相互交流,共同进步目录数据结构基本概念与术语数据结构结构逻辑结构和......