java版二叉树算法实现

时间:2022-04-03 15:30:51
 import java.util.ArrayList;
class BinaryTree {
private static class TreeNode {
int data;
TreeNode left;
TreeNode right;
TreeNode(int data){
this.data = data;
left = null;
right = null;
}
} static int[] arr = {1,2,3,4,5,6,7,8,9};
static ArrayList<TreeNode> tree = new ArrayList<TreeNode>();
private static void creatTree() {
for(int i = 0; i < arr.length; i++) {
tree.add(new TreeNode(arr[i]));
} // 建立父亲与孩子关系
for(int i = 0; i <= arr.length / 2 - 1; i++) {
tree.get(i).left = tree.get(i * 2 + 1);
tree.get(i).right = tree.get(i * 2 + 2);
}
// int lastParent = arr.length / 2 - 1;
// tree.get(lastParent).left = tree.get(lastParent * 2 + 1);
// if(arr.length % 2 == 1) {
// tree.get(lastParent).right = tree.get(lastParent * 2 + 2);
// }
}
private static void preOrder(TreeNode node){
if(node == null) return;
System.out.print(node.data + " ");
preOrder(node.left);
preOrder(node.right);
} private static void inOrder(TreeNode node) {
if(node == null) return;
inOrder(node.left);
System.out.print(node.data + " ");
inOrder(node.right);
} private static void postOrder(TreeNode node) {
if(node == null) return;
postOrder(node.left);
postOrder(node.right);
System.out.print(node.data + " ");
} public static void main(String[] args) {
creatTree();
TreeNode root = tree.get(0);
System.out.println("先序:");
preOrder(root);
System.out.println();
System.out.println("中序:");
inOrder(root);
System.out.println();
System.out.println("后序:");
postOrder(root);
System.out.println(); }
}

以arraylist为数组结构实现的一个完全二叉树,第n个结点的左孩子为2n+1,右孩子为2n+2

java版二叉树算法实现的更多相关文章

  1. 《剑指Offer》-004 -Java版二叉树先序和中序遍历返回原二叉树

    如题 (总结要点) 注意空值 假定数据是没有问题的 前序(根左右) ,中序(左根右), 故每次的第一个节点就是根节点 没用数组的库函数,自己手写了两个方法 用Java代码写二叉树很舒服, 没有啥指针, ...

  2. LeetCode315—Count of Smaller Numbers After Self—Java版归并算法

    这是我在研究leetcode的solution第一个解决算法时,自己做出的理解,并且为了大家能看懂,做出了详细的注释. 此算法算是剑指Offer36的升级版,都使用的归并算法,但是此处的算法,难度更高 ...

  3. 常见排序算法题(java版)

    常见排序算法题(java版) //插入排序:   package org.rut.util.algorithm.support;   import org.rut.util.algorithm.Sor ...

  4. 剑指Offer——回溯算法解迷宫问题(java版)

    剑指Offer--回溯算法解迷宫问题(java版)   以一个M×N的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍.设计程序,对任意设定的迷宫,求出从入口到出口的所有通路.   下面我们来详细讲一 ...

  5. Java数据结构和算法 - 二叉树

    前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...

  6. java版数据结构与算法 (1综述)

    很大部分转载自 https://blog.csdn.net/singit/article/details/54898316 数据的逻辑结构:反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系指数据元 ...

  7. 常见排序算法总结(java版)

    一.冒泡排序 1.原理:相邻元素两两比较,大的往后放.第一次完毕,最大值在最大索引处. 即使用相邻的两个元素一次比价,依次将最大的数放到最后. 2.代码: public static void bub ...

  8. 排序算法Java版,以及各自的复杂度,以及由堆排序产生的top K问题

    常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二.依此规律,直至比较结 ...

  9. 玩转算法系列--图论精讲 面试升职必备(Java版)

    第1章 和bobo老师一起,玩转图论算法欢迎大家来到我的新课程:<玩转图论算法>.在这个课程中,我们将一起完整学习图论领域的经典算法,培养大家的图论建模能力.通过这个课程的学习,你将能够真 ...

随机推荐

  1. Review PHP设计模式之——观测模式

    观测模式: <?php class car implements SplSubject{ private $carName; //车的类型 private $carState=0; //车的状态 ...

  2. Socket和SignalR

    写到一半停电了,这心情真是哔了狗了,草稿箱竟然也没有!!! 好吧,这篇文档是之前写的记录,现在来完善(还是要完善的). 导读: 附件代码实现: Socket: 定义,同步实现,异步实现,还包括了TCP ...

  3. 关于session&lowbar;start&lpar;&rpar;这个问题

    关于session_start()这个问题,其实网上很多解决的方法,论坛也好多人回答这类的问题, 现在的状况是依然有警告提示Warning: session_start() [function.ses ...

  4. hive的find&lowbar;in&lowbar;set函数

    集合查找函数: find_in_set语法: find_in_set(string str, string strList) 返回值: int说明: 返回str在strlist第一次出现的位置,str ...

  5. React-navigation物理返回键提示效果BackHandler

    componentWillMount(){    BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid); } co ...

  6. html代码段

    添加icon<link rel="shortcut icon" href="img/100du.ico"/>

  7. 稳定排序nlogn之归并排序&lowbar;一维&comma;二维

    稳定排序nlogn之归并排序_一维,二维 稳定排序:排序时间稳定的排序 稳定排序包括:归并排序(nlogn),基数排序[设待排序列为n个记录,d个关键码,关键码的取值范围为radix,则进行链式基数排 ...

  8. java中的设计模式一 装饰模式

    1.装饰模式(Decorator)的定义:又名包装(Wrapper)模式,装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 2.装饰模式以对客户端透明的方式动态的给一个对象附加上 ...

  9. Msys2的安装&comma;并整合到cmder中

    下载:msys2-x86_64-20161025.exe 下载安装包,然后装上. 打开msys的shell之后首先升级一下pacman,然后就可以愉快地Syu了. $ pacman -Sy pacma ...

  10. svn服务器的配置和使用

    安装好了svn服务器,打开 VisualSVN Server Manager 先新建用户和组,在代码库创建的时候可以指定哪些用户或者组有读写权限,也可以创建好后指定 创建用户 输入用户名和密码创建用户 ...