🇨🇳
阿臻的学习笔记
  • 🤖AI
    • 📑README
    • 🕒Scheduling
      • 一种JSSP的DRL环境
    • 📜Paper
      • 神经协同过滤
      • 非侵入信号深度学习
      • 肾透析移植机器学习
      • 心理学随机森林
      • P300数据学习
    • ⚒️Pytorch
      • 1.1数据基础
      • 1.2自动梯度
      • 1.3神经网络
      • 1.4模型实现
      • 2数据操作
    • 🛠️Ray+Gym
    • 📃Graph Neural
      • 图神经网络基础
      • Contrastive Multi-View Representation Learning on Graphs
    • 📽️Deep Learning
      • 《第一章》
      • 《第二章》
      • 《第三章》
      • 《第四章》
      • 台湾陈蕴侬视频2020
    • 🔨MXNet
      • 《第一章》《第二章》
      • 《第三章》
      • 《第四章》
      • 《第五章》
      • 《第六章》
      • 《第七章》
      • 《第八章》
      • 《第九章》
      • 《第十章》
  • 👨‍🏭Study
    • 📔Algorithm
      • Leetcode
        • 第一天(乱刷)
        • 第二天(栈)
        • 第三天(栈)
        • 第四天(堆)(贪心)
        • 第五天(贪心)
        • 第六天(贪心)
        • 第七天(排序)
        • 第八天(排序)
        • 第九天(排序)
        • 第十天(位运算)
        • 第十一天(位运算)
        • 第十二天(位运算)
        • 第十三天(位运算)
        • 第十四天(树)
        • 第十五天(树)
        • 第十六天(树)
        • 第十七天(树)
        • 第十八天(树)
        • 第十九天(树)
        • 第二十天(树)
        • 第二十一天(树)
        • 第二十二天(并查集)
        • 第二十三天(并查集)
        • 第二十四天(DFS)(图)
        • 第二十五天(图)(设计)
        • 第二十六天(拓扑)
        • 第二十七天(字典树)
        • 第二十八天(字典树)
        • 第二十九天(树状数组)(二叉搜索树)
        • 第三十天(递归)
        • 第三十一天(脑筋急转弯)
        • 第三十二天(脑筋急转弯)
        • 第三十三天(记忆化)
        • 第三十四天(队列)
        • 第三十五天(队列)
        • 第三十六天(极小化极大)
        • 第三十七天(几何)
        • 第三十八天(蓄水池抽样)
        • 第三十九天(数组)
        • 第四十天(数组)
        • 第四十一天(数组)
        • 第四十二天(数组)
        • 第四十三天(数组)
        • 第四十四天(数组)
        • 第四十五天(数组)
        • 第四十六天(数组)
      • Sort
        • 最小堆
        • 归并排序(merge_sort)
    • 📓Knowledge
      • python补码
    • 🔧Other
      • pythonic语法
      • Ubuntu备忘
由 GitBook 提供支持
在本页

这有帮助吗?

导出为 PDF
  1. Study
  2. Algorithm
  3. Leetcode

第十八天(树)

今天完成题目:107,1022,637,235,257,872,538,1723,100 107:二叉树的层次遍历

  • 通过队列完成二叉树的层次遍历

  • 每一层需要一个临时队列存储该层数据

1022:从根到叶的二进制数之和

  • 使用深度遍历完成,并且每进入下一层,数字需要左移一位,并加上当前结点的值

  • ^在python是异或,**才是指数

637:二叉树的层平均值

  • 类似107实现层遍历而后计算平均值

235:二叉搜索树的最近公共祖先

  • 昨天做过,判断p,q所在的位置即可,分为三种情况

    • p,q均在右子树中,递归查找右子树

    • p,q均在左子树中,递归查找左子树

    • p,q已经找到其中一个,或者p,q分别在左右子树中,则返回当前结点作为答案.

257:二叉树的所有路径

  • 通过深度遍历输出所有路径

872:叶子相似的树

  • 保存所有叶子结点

  • 通过==符号可以判断两个叶子list是否完全相同

538:把二叉搜索树转换为累加树

  • 按照右中左的逆中序遍历,从而获得从大到小的值

  • 记录累加值,并将当前结点改为该值

1723:BiNode

  • 把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的

  • 设置一个结点pre记录上一个结点

  • 按照左中右的中序遍历,获得从小到大的值

    • 当前节点的左节点置空

    • 将当前节点置为上一结点的右节点

    • 更新pre结点为当前结点

100:相同的树

  • 设置默认回答为True(全局变量,也可以用来中止递归)

  • 遍历二叉树,当发现某一个情况为错误时,设置回答为错

    • 其中一颗树的左结点存在而右结点不存在

    • 其中一颗树的右结点存在而左结点不存在

    • 一棵树的当前结点都存在,但值不等

    • 其他情况继续递归

上一页第十七天(树)下一页第十九天(树)

最后更新于4年前

这有帮助吗?

👨‍🏭
📔