1、如何定义一个二叉树

通过递归的方式定义二叉树:不能直接定义二叉树,只能定义二叉树结点。节点类的属性包括当前节点的值、左子节点、右子节点(子节点的类型也是二叉树结点类)、构造函数,代码如下:

public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; }
}

3、二叉树的遍历:

  • 三种遍历顺序的区别主要是看根节点的位置
  • 深度遍历(DFS)有三种策略:前序遍历、中序遍历、后序遍历

1、前序遍历:根节点-左节点-右节点

// 打印前序遍历
void dfs(TreeNode root) { if(root == null) return; //递归结束条件System.out.println(root.val); // 根:此位置写其他操作代码dfs(root.left); // 左dfs(root.right); // 右
}

2、中序遍历 :左节点-根节点-右节点

// 打印中序遍历
void dfs(TreeNode root) {if(root == null) return;  //递归结束条件dfs(root.left); // 左System.out.println(root.val); // 根:此位置写其他操作代码dfs(root.right); // 右
}
// 中序遍历的倒序
void dfs(TreeNode root) {if(root == null) return;  //递归结束条件dfs(root.right); // 右System.out.println(root.val); // 根:此位置写其他操作代码dfs(root.left); // 左
}

3、后序遍历 :左节点-右节点-根节点

// 打印中序遍历
void dfs(TreeNode root) {if(root == null) return; //递归结束条件dfs(root.left); // 左dfs(root.right); // 右System.out.println(root.val); // 根:此位置写其他操作代码
}

3、二叉搜索树(二叉排序树)

根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。

中序搜索二叉树形成的列表是排序列表

参考文章

用Python生成二叉树

【数据结构】理解二叉树的三种遍历--前序、中序、后序 +层序(简明易懂)

数据结构:二叉树(BinaryTree)原理及其java实现相关推荐

  1. 数据结构——二叉树遍历原理及方法

    数据结构--二叉树遍历原理及方法 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次. 创建二叉树 ...

  2. 数据结构—二叉树BinaryTree

    目录 1.如何定义一个二叉树 2.深度优先搜索 3.广度优先搜索 1.定义一个二叉树 通过递归的方式定义二叉树,不能直接定义二叉树,只能定义二叉树结点.节点类的属性包括当前节点的值.左子节点.右子节点 ...

  3. 二叉树 BinaryTree (先序、中序、后序遍历 节点查找、插入、删除 完整类) Java数据结构与算法

    二叉树 BinaryTree (先序.中序.后序遍历 节点查找.插入.删除 完整类) Java数据结构与算法 源代码: view plain /** * * @author sunnyykn */ i ...

  4. java二叉树是什么_java数据结构二叉树是什么?特点是?

    二叉树是什么?学习java的小伙伴可能经常会听到这个词,但具体是什么又不可知,下面小编就来带你详细了解下二叉树. 二叉树概念 二叉树,指计算机中的一种树结构,这种树结构中每个结点至多只有两个子树,它们 ...

  5. 数据结构与算法基础(java版)

    目录 数据结构与算法基础(java版) 1.1数据结构概述 1.2算法概述 2.1数组的基本使用 2.2 数组元素的添加 2.3数组元素的删除 2.4面向对象的数组 2.5查找算法之线性查找 2.6查 ...

  6. MySQL索引背后的数据结构及算法原理【转】

    http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...

  7. 数据结构二叉树的所有基本功能实现。(C++版)

    本人刚学数据结构,对树的基本功能网上找不到C++代码 便自己写了一份,贴出方便大家进行测试和学习. 大部分功能未测试,如有错误或者BUG,请高手们指教一下,谢谢. 结点声明: BinTreeNode. ...

  8. MySQL索引背后的数据结构及算法原理--转

    MySQL索引背后的数据结构及算法原理 作者 张洋 | 发布于 2011-10-18 MySQL 索引 B树 优化 原文地址:http://blog.codinglabs.org/articles/t ...

  9. 数据结构 - 二叉树 - 面试中常见的二叉树算法题

    数据结构 - 二叉树 - 面试中常见的二叉树算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图 ...

最新文章

  1. 10个必会的 PyCharm 技巧
  2. python第三天(dictionary应用)转
  3. 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
  4. C++静态全局变量问题
  5. gulp+browserSync自动刷新页面
  6. 如何系统地自学python~知乎_经验分享 | 如何系统地自学 Python?
  7. 2017.8.26 力 思考记录
  8. IDEA设置自动导包功能
  9. thinkphp 模板 in
  10. python中gil锁和线程锁_浅谈Python中的全局锁(GIL)问题
  11. [DB]MariaDB 与 MySql 数据库
  12. YAF 关闭错误异常使用trigger_error来处理
  13. 6个最佳的开源Python应用服务器
  14. Flutter进阶第6篇: 获取设备信息 以及 使用高德Api获取地理位置
  15. 洛谷P3768 简单的数学题
  16. restful架构风格设计准则(五)用户认证和session管理
  17. mac电脑重复文件如何查找?
  18. 微信小程序并发服务器架构,「系统架构」如何设计一个健壮高效的微信小程序登录方案...
  19. vue2的 watch的理解(7)
  20. 处理器后面的字母含义_科普向,笔记本cpu结尾字母的含义

热门文章

  1. 2015.05.15,外语,学习笔记-《Word Power Made Easy》 01 “如何讨论人格特点”
  2. 缓存插件 Spring支持EHCache缓存
  3. 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
  4. [转]JavaScript var obj = { id:1, name:jacky } 大括号是啥意思?
  5. c#4.0新特性之一: Dynamic Lookup (1)
  6. 方法变量与方法表达式
  7. iOS wkwebview https 加载不受信用的站点
  8. 站点安全预警,建议大家多重禁止load_file函数!
  9. LSP(分层服务提供者)
  10. rpm包时遇到Header V3 DSA signature: NOKEY时解决办法