数据结构:二叉树(BinaryTree)原理及其java实现
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实现相关推荐
- 数据结构——二叉树遍历原理及方法
数据结构--二叉树遍历原理及方法 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次. 创建二叉树 ...
- 数据结构—二叉树BinaryTree
目录 1.如何定义一个二叉树 2.深度优先搜索 3.广度优先搜索 1.定义一个二叉树 通过递归的方式定义二叉树,不能直接定义二叉树,只能定义二叉树结点.节点类的属性包括当前节点的值.左子节点.右子节点 ...
- 二叉树 BinaryTree (先序、中序、后序遍历 节点查找、插入、删除 完整类) Java数据结构与算法
二叉树 BinaryTree (先序.中序.后序遍历 节点查找.插入.删除 完整类) Java数据结构与算法 源代码: view plain /** * * @author sunnyykn */ i ...
- java二叉树是什么_java数据结构二叉树是什么?特点是?
二叉树是什么?学习java的小伙伴可能经常会听到这个词,但具体是什么又不可知,下面小编就来带你详细了解下二叉树. 二叉树概念 二叉树,指计算机中的一种树结构,这种树结构中每个结点至多只有两个子树,它们 ...
- 数据结构与算法基础(java版)
目录 数据结构与算法基础(java版) 1.1数据结构概述 1.2算法概述 2.1数组的基本使用 2.2 数组元素的添加 2.3数组元素的删除 2.4面向对象的数组 2.5查找算法之线性查找 2.6查 ...
- MySQL索引背后的数据结构及算法原理【转】
http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...
- 数据结构二叉树的所有基本功能实现。(C++版)
本人刚学数据结构,对树的基本功能网上找不到C++代码 便自己写了一份,贴出方便大家进行测试和学习. 大部分功能未测试,如有错误或者BUG,请高手们指教一下,谢谢. 结点声明: BinTreeNode. ...
- MySQL索引背后的数据结构及算法原理--转
MySQL索引背后的数据结构及算法原理 作者 张洋 | 发布于 2011-10-18 MySQL 索引 B树 优化 原文地址:http://blog.codinglabs.org/articles/t ...
- 数据结构 - 二叉树 - 面试中常见的二叉树算法题
数据结构 - 二叉树 - 面试中常见的二叉树算法题 数据结构是面试中必定考查的知识点,面试者需要掌握几种经典的数据结构:线性表(数组.链表).栈与队列.树(二叉树.二叉查找树.平衡二叉树.红黑树).图 ...
最新文章
- 10个必会的 PyCharm 技巧
- python第三天(dictionary应用)转
- 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
- C++静态全局变量问题
- gulp+browserSync自动刷新页面
- 如何系统地自学python~知乎_经验分享 | 如何系统地自学 Python?
- 2017.8.26 力 思考记录
- IDEA设置自动导包功能
- thinkphp 模板 in
- python中gil锁和线程锁_浅谈Python中的全局锁(GIL)问题
- [DB]MariaDB 与 MySql 数据库
- YAF 关闭错误异常使用trigger_error来处理
- 6个最佳的开源Python应用服务器
- Flutter进阶第6篇: 获取设备信息 以及 使用高德Api获取地理位置
- 洛谷P3768 简单的数学题
- restful架构风格设计准则(五)用户认证和session管理
- mac电脑重复文件如何查找?
- 微信小程序并发服务器架构,「系统架构」如何设计一个健壮高效的微信小程序登录方案...
- vue2的 watch的理解(7)
- 处理器后面的字母含义_科普向,笔记本cpu结尾字母的含义
热门文章
- 2015.05.15,外语,学习笔记-《Word Power Made Easy》 01 “如何讨论人格特点”
- 缓存插件 Spring支持EHCache缓存
- 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
- [转]JavaScript var obj = { id:1, name:jacky } 大括号是啥意思?
- c#4.0新特性之一: Dynamic Lookup (1)
- 方法变量与方法表达式
- iOS wkwebview https 加载不受信用的站点
- 站点安全预警,建议大家多重禁止load_file函数!
- LSP(分层服务提供者)
- rpm包时遇到Header V3 DSA signature: NOKEY时解决办法