算法训练营Day14(二叉树)

理论基础

这里的话,学的也不少,就是注意一下java中容器的支持吧,hashMap这里,jdk8以后是hash表

数组+链表转红黑树的方式,这里的话采用的红黑树是完全二叉树的一种

另外优先级队列PriorityQueue是一个二叉堆,也是完全二叉树的一种。

二叉树的遍历方式:广度优先:层序遍历

深度优先:前中后

另外还有递归遍历非递归遍历(叫做 迭代法)【因为递归的本质也是栈

TreeMap这里好就是单纯的二叉树,红黑树,不涉及哈希表

可以看下这篇文章

http://t.csdnimg.cn/Nq3ZY

递归遍历

递归

递归需要注意的地方:

1、参数和返回值

        可动态调整~

        二叉树一般是(根节点,数组)

2、结束条件

        二叉树终止条件是指针为null的时候

3、确认递归的逻辑

        处理的逻辑就是,往数组放元素。

前序遍历

144. 二叉树的前序遍历 - 力扣(LeetCode)

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        preorder(root,res);
        return res;
    }
    private void preorder(TreeNode root,List<Integer> result){
        if(root==null){
            return;
        }
        result.add(root.val);
        preorder(root.left,result);
        preorder(root.right,result);
    }
}

中序遍历

public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        inorder(root,res);
        return res;
    }
    private void inorder(TreeNode root,List<Integer> result){
        if(root==null){
            return;
        }
        inorder(root.left,result);
        result.add(root.val);
        inorder(root.right,result);
    }

后序遍历

145. 二叉树的后序遍历 - 力扣(LeetCode)

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        preorder(root,res);
        return res;
    }
    private void preorder(TreeNode root,List<Integer> result){
        if(root==null){
            return;
        }
        preorder(root.left,result);
        preorder(root.right,result);
        result.add(root.val);
    }
}

日后补充(我基础不好~hh)

迭代遍历 (基础不好的录友,迭代法可以放过)

题目链接/文章讲解/视频讲解:代码随想录

 统一迭代   (基础不好的录友,迭代法可以放过)

这是统一迭代法的写法, 如果学有余力,可以掌握一下

题目链接/文章讲解:代码随想录

相关推荐

  1. 算法训练Day14()

    2023-12-17 12:24:02       77 阅读
  2. 算法训练 day14 part02

    2023-12-17 12:24:02       27 阅读
  3. 算法训练Day15()

    2023-12-17 12:24:02       61 阅读
  4. 算法训练day19,8-2

    2023-12-17 12:24:02       58 阅读
  5. 的遍历——代码随想录算法训练Day14

    2023-12-17 12:24:02       50 阅读
  6. 代码随想录算法训练day14|的遍历

    2023-12-17 12:24:02       70 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 12:24:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 12:24:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 12:24:02       87 阅读
  4. Python语言-面向对象

    2023-12-17 12:24:02       96 阅读

热门阅读

  1. C#编程语言简介

    2023-12-17 12:24:02       67 阅读
  2. 实验六 排序相关典型算法实现

    2023-12-17 12:24:02       38 阅读
  3. 在vue项目中webSocket封装(传token)

    2023-12-17 12:24:02       58 阅读
  4. 分发饼干(贪心算法)

    2023-12-17 12:24:02       62 阅读
  5. 谣言检测常用评价指标

    2023-12-17 12:24:02       66 阅读
  6. 用go封装一下封禁功能

    2023-12-17 12:24:02       55 阅读
  7. MySQL数据库存储

    2023-12-17 12:24:02       58 阅读
  8. pytorch之导出ONNX相关问题

    2023-12-17 12:24:02       60 阅读
  9. 如何在PHP中使用PDO预处理语句?

    2023-12-17 12:24:02       59 阅读
  10. fastadmin 导出

    2023-12-17 12:24:02       60 阅读