二叉树

文章目录

    • 二叉树
  • 一、二叉树是什么?
    • 二叉树的性质
  • 二、二叉树简单JAVA代码实现
    • 1.Node(节点)
    • 2.MyTree(简单二叉树)
  • 总结

一、二叉树是什么?

二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。

二叉树的性质

性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)

性质2:深度为k的二叉树至多有2k-1个结点(k>=1)

性质3:包含n个结点的二叉树的高度至少为(log2n)+1

性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1

二、二叉树简单JAVA代码实现

1.Node(节点)

代码如下(示例):

public class Node {public int data;//数据public Node leftNode;//左节点public Node rightNode;//右节点/*** 添加节点 * @param t 新节点*/public void addNode(Node t){if(t.data<this.data){//新增节点数据比此节点数据小时if(leftNode == null)//此节点没有左节点时,就把此节点作为左节点leftNode = t;else//有左节点时,递归调用addNode()直到没有左节点为止leftNode.addNode(t);}else{//新增节点数据比此节点数据大时if(rightNode == null)//此节点没有右节点时,就把此节点作为右节点rightNode = t;else//有右节点时,递归调用addNode()直到没有右节点为止rightNode.addNode(t);}        }/*** 中序遍历 * @param */public void zhongxu(){if(leftNode!=null) leftNode.zhongxu();System.out.println(data);if(rightNode!=null) rightNode.zhongxu();}}

中序遍历:左子树->根节点->右子树(左->根->右)
步骤:
第一步:访问该节点左子树

第二步:若该节点有左子树,则返回第一步,否则打印该节点

第三步:若该节点有右子树,则返回第一步,否则结束递归并返回上一节点

2.MyTree(简单二叉树)

代码如下(示例):

public class MyTree {private  Node root;//根节点/*** 添加数据 * @param x 传进来的数据添加到树中*/public void add(int x){Node  p = new Node();p.data = x;if(root == null)//没有根节点时,以新传进来的数据作为根节点root = p;elseroot.addNode(p);}/*** 排序* @param */public void sort(){if(root == null) return;root.zhongxu();}
}

总结

节点作为构造二叉树的基本,需要深刻理解左节点和右节点的逻辑思路。

简单二叉树Java代码实现相关推荐

  1. 100转换成二进制 java,一段简单的java代码,十进制转二进制

    一段简单的java代码,十进制转二进制 mip版  关注:188  答案:5  悬赏:40 解决时间 2021-01-23 23:14 已解决 2021-01-23 05:43 代码如下,希望可以帮我 ...

  2. 简单的Java代码测试样例设计

    简单的Java代码测试样例设计 函数一 public static int findLast(int[] x, int y) {for (int i = x.length - 1; i > 0; ...

  3. 反转二叉树 Java代码 (二叉树,中序遍历,层序遍历)【PAT甲级1102】

    输入样例: 8 1 - - - 0 - 2 7 - - - - 5 - 4 6 输出样例: 3 7 2 6 4 0 5 1 6 5 7 4 3 2 0 1 算法思路: 要将二叉树翻转,可以先按题意建好 ...

  4. 使用简单的Java代码在SAP C4C里创建销售订单

    需要创建的销售订单的明细通过硬编码指定: 比如销售订单的描述为Jerry Test 2019-1-23 16:05PM 执行之后,看到Status Code 201,说明创建成功: 到UI上能看到成功 ...

  5. java 的简单代码_绝对最简单(Java代码)

    解题思路: 注意事项: 参考代码: import java.util.Scanner; public class Main { public static void main(String[] arg ...

  6. 简单跑酷java代码_如何实现一个简单的跑酷游戏?(代码详解)

    本篇文章给大家带来的内容是介绍如何实现一个简单的跑酷游戏?(代码详解).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 采用的物理引擎是:Phaser.js 官网地址:http:// ...

  7. 简单的Java代码实现给QQ邮箱发邮件

    一.前期准备 准备两个qq邮箱号,本例使用的是自己的两个邮箱 syc582535560@foxmail.com    2212444549@qq.com 下载javax.mail.jar  jar包 ...

  8. 适配器设计模式,简单的Java代码模拟

    /**适配器设计模式* 问题:* 接口(方法比较多)--实现类(仅仅使用一个也得把其他方法给实现了,哪怕是空实现)* 结局方案:* 接口(方法比较多)--适配器类(实现接口,仅仅是空实现)--实现类( ...

  9. 简单的java程序代码?

    我需要一段最简单的java代码程序 1.最简单的java代码肯定就是这个了,如下:public class MyFirstApp { public static void main(String[] ...

最新文章

  1. linux用户空间 限制吗,在Linux中限制用户空间
  2. C语言解释器,用C语言脚本程序
  3. 在python程序中的进程操作
  4. NuGet.org服务管理变更,提升中国用户体验
  5. NYOJ-数独(dfs)
  6. java策略模式详解_Java经典设计模式之策略模式原理与用法详解
  7. 华彬 - 华彬讲透孙子兵法(2015年5月22日)
  8. python自动发邮件mysql_python自动化六--操作mysql,redis,发送邮件,EXCEL,MD5加密
  9. python分词、词频统计以及根据词频绘制词云
  10. 服务器安装配置lldp协议
  11. linux mint 图标主题_Ubuntu/Linux Mint 用上仿 Win7/Win8 主题
  12. rust石墙掉耐久_rust恢复房子耐久 | 手游网游页游攻略大全
  13. 出现Ncat: bind to 0.0.0.0:9999: Address already in use. QUITTING.如何解决?
  14. python小海龟画房子编程_这个python海龟绘图为什么出错?
  15. html 输入年份,判断是否是闰年
  16. 无法识别的usb设备 跟这台计算机,无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常,WINDOWS无法识别...
  17. 二叉树的堂兄弟节点判断001
  18. 初步完成了一个处理PEN3电子鼻气味传感数据的Matlab-GUI程序
  19. Spring MVC--绑定数组和集合(四)
  20. 一加手机怎么导出照片_怎样从云服务导出相片 云端备份照片怎么导出

热门文章

  1. python 立体图 交叉 平面_如何绘制相交平面?
  2. 快手怎么引流最好?快手运营技巧,必掌握的几点你了解吗?
  3. 物联网工程实训 第5天
  4. 华为鸿蒙系统有多快?多家巨头实测比安卓快60%
  5. 通信工程实施室内分布系统设计
  6. 如何把握批判性思维特性?
  7. 程序员上班时戴耳机都在听什么?
  8. 小程序-浮动view背景图大小自适应
  9. 解决使用 plt.savefig 保存图片时一片空白
  10. 收钱吧的 Python 高效自动化测试实践