先来明确下树的概念:明确的父子关系

正确的示例:

错误的示例:

几个名词:

节点:线两端的点即节点

根节点:无父节点的节点

叶子节点:无子节点的节点

几个概念:

高度:从下到上,从0计数,根节点最高

深度:从上到下,从0计数,根节点为0

层:从上到下,从1计数,根节点为第一层

特殊的树,二叉树,二叉树又分为普通二叉树、满二叉树,完全二叉树

普通二叉树:每个节点最多两个字节点。

满二叉树:除了叶子节点,每个节点都有左右两个子节点,所有叶子节点在同一层级。

完全二叉树:从根节点开始,从上到下,从左往右,依次填满节点形成的二叉树。

二叉树的遍历:

前序遍历:根节点->左子树->右子树

中序遍历:左子树->根节点->右子树

后续遍历:左子树->右子树->根节点

示例:

前序遍历:A->B->D->E->C->F->G

中序遍历:D->B->E->A->F->C->G

后续遍历:D->E->B->F->G->C->A

Leetcode练习题:

144题  二叉树前序遍历

class Solution {

public List preorderTraversal(TreeNode root) {

List resultList = new ArrayList<>();

if(root == null){

return resultList;

}

//将根节点的值加入返回列表

resultList.add(root.val);

//如果左子节点不为空,前序遍历左子节点

if(root.left!=null){

resultList.addAll(preorderTraversal(root.left));

}

//如果右子节点不为空,前序遍历右子节点

if(root.right!=null){

resultList.addAll(preorderTraversal(root.right));

}

return resultList;

}

}

94题 二叉树中序遍历

class Solution {

public List inorderTraversal(TreeNode root) {

List resultList = new ArrayList<>();

if(root == null){

return resultList;

}

//如果左子节点不为空,中序遍历左子节点

if(root.left!=null){

resultList.addAll(inorderTraversal(root.left));

}

//将根节点的值加入返回列表

resultList.add(root.val);

//如果右子节点不为空,中序遍历右子节点

if(root.right!=null){

resultList.addAll(inorderTraversal(root.right));

}

return resultList;

}

}

145题 二叉树后序遍历

class Solution {

public List postorderTraversal(TreeNode root) {

List resultList = new ArrayList<>();

if(root == null){

return resultList;

}

//如果左子节点不为空,后序遍历左子节点

if(root.left!=null){

resultList.addAll(postorderTraversal(root.left));

}

//如果右子节点不为空,后序遍历右子节点

if(root.right!=null){

resultList.addAll(postorderTraversal(root.right));

}

//将根节点的值加入返回列表

resultList.add(root.val);

return resultList;

}

}

JAVA数据结构知识点,数据结构 树Tree 知识点总结 附Leetcode力扣练习题答案相关推荐

  1. 数据结构与算法之LeetCode-652. 寻找重复的子树 - 力扣(1024程序员节)

    652. 寻找重复的子树 - 力扣(LeetCode) /*** Definition for a binary tree node.* function TreeNode(val, left, ri ...

  2. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  3. 《LeetCode力扣练习》第160题 相交链表 Java

    <LeetCode力扣练习>第160题 相交链表 Java 一.资源 题目: 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点.如果两个链表不存 ...

  4. 《LeetCode力扣练习》第617题 合并二叉树 Java

    <LeetCode力扣练习>第617题 合并二叉树 Java 一.资源 题目: 给你两棵二叉树: root1 和 root2 . 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些 ...

  5. 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java

    <LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...

  6. 《LeetCode力扣练习》第96题 不同的二叉搜索树 Java

    <LeetCode力扣练习>第96题 不同的二叉搜索树 Java 一.资源 题目: 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回 ...

  7. 《LeetCode力扣练习》剑指 Offer 28. 对称的二叉树 Java

    <LeetCode力扣练习>剑指 Offer 28. 对称的二叉树 Java 一.资源 题目: 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它的镜像一样,那么它是对称的 ...

  8. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  9. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java

    <LeetCode力扣练习>剑指 Offer 25. 合并两个排序的链表 Java 一.资源 题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: ...

最新文章

  1. 前端见微知著JavaScript基础篇:你所不知道的apply, call 和 bind
  2. AngularJS开发人员最常犯的10个错误
  3. 字节跳动19春招研发第一次笔试-A卷第一题
  4. rgb cmyk lab的区别
  5. android 断开蓝牙连接,如何在android中连接和断开扬声器蓝牙
  6. java 泰勒级数_鸡群优化算法(CSO)、蜻蜓算法(DA)、乌鸦搜索算法(CSA)、泰勒级数(Taylor series)...
  7. 树莓派SSH 连接不上:socket error Event:32 Error:10053
  8. Ajax-jQuery_Ajax_实例 ($.ajax、$.post、$.get)
  9. java23中设计模式——行为模式——Chain of Responsibility(职责链)
  10. cas单点登录学习:cas服务端与客户端的搭建
  11. 饿了么风神系统手机版_数字技术带来平等工作机会 饿了么智能调度系统助力残障骑手少跑路多接单...
  12. 高质量病毒——暴风一号(BoyFine)代码.vbs
  13. 电脑自带的应用商店连接不到服务器,win10应用商店无法连接服务器最佳解决方法...
  14. 文件上传与下载之数据库实现
  15. javascript 模拟退格键_js按钮模拟键盘退格键定位删除问题
  16. java计算机毕业设计河南省农村多元化养老服务管理系统设计与实现源码+mysql数据库+系统+lw文档+部署
  17. 为什么是UUID做主键
  18. js 获取汉字首拼和全拼和拼音
  19. 单片机毕设 stm32人体健康状态检测系统(项目开源)
  20. RPG游戏《黑暗之光》流程介绍与代码分析之(四):任务系统的实现

热门文章

  1. 集成学习VotingClassifier、HistGradientBoostingClassifier、Stacking、Blending
  2. MF+Matrix Factorization+矩阵分解
  3. 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.
  4. php 快速导出csv,php快速导出csv格式数据程序代码
  5. 三代测序(SMRT Sequencing)
  6. Reconstructing complex regions of genomes using long-read sequencingtechnology
  7. java 枚举使用简书_Java枚举
  8. python 读写 csv
  9. tf.keras.optimizers.Adam 优化器 示例
  10. 图像拼接--Seam-Driven Image Stitching