美文网首页
Leetcode day1 树

Leetcode day1 树

作者: Yuyao_b2c0 | 来源:发表于2020-02-12 21:22 被阅读0次

Leetcode104:Maximum Depth of Binary Tree

二叉树最大深度

解题思路:用递归式最直接的


Leetcode110:Balanced Binary Tree

解题思路:还是递归


Leetcode543,Leetcode226,Leetcode617


路径总和I,II,III

Leetcode112:路径总和

仍然递归

Leetcode113: 路径总和 II

这题和上一道题很像,增加一个记录的逻辑就可以了

ps: 一个列表a  a.append()是在原列表上添加元素,不创建新列表,tmp = a.append()的话,tmp是None

创建新列表的方式:tmp = a+[新元素]

Leetcode437:路径总和 III

为了看懂这道,先去做数组情况下的这道题————》

Leetcode560:和为K的子数组

这题用了哈希表(key value字典)


Leetcode572:另一个树的子树

双递归


Leetcode101:对称二叉树

递归方法很直接


Leetcode687:最长同值路径

如果不知道怎么做了请看Leetcode543,看完就知道了


Leetcode111:二叉树的最小深度

真的简单


Letcode404:左叶子之和

递归大法好


Leetcode337:打家劫舍 III

这题有点儿难度。动态规划。暴力递归————>记忆化+暴力递归————>优雅解法


Leetcode671:二叉树中第二小的节点

递归


深度优先、广度优先:

深度优先一般是递归,广度优先一般用一个队列存储树节点


Leetcode637:二叉树的层平均值

这题DFS\BFS都可以


Leetcode513:找树左下角的值

这题DFS\BFS都可以,自己感觉BFS更直接


***Leetcode144\145\94:二叉树的前序、后序、中序遍历(迭代方法)

这几道题有点儿脑筋急转弯的感觉,属于硬做做不出来,但是答案及其简介的类型,先理解递归的方法这三种分别是怎么遍历节点的,然后用迭代去模仿;前序和后序的迭代写法很像,合在一看别有一番意思;


BST(二叉查找树(Binary Search Tree)

(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 

Leetcode669:修剪二叉搜索树

十分简单,get到啥是BST后递归一遍过


Leetcode230:二叉搜索树中第K小的元素

递归和迭代都可以,迭代更省时间


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

递归和迭代都可以,有个莫里斯更省空间但是我没看。。。。。


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

居然是先把普遍情况的给做出来了。。。。。也就是236.递归就行,写了一个helper function来递归,helper function返回的是p和q是否在以这个根节点为树的树里面

二叉搜索树要判断p和q是否在一棵树的右子树还是左子树只需要进行值的比较,因为右子树都比根节点的值要大,左子树都比根节点的值要少


Leetcode108:将有序数组转换为二叉搜索树

递归


Leetcode109:有序链表转换二叉搜索树

这题和上题思路一样,链表使用快慢指针即可找到中间点。


Leetcode653:两数之和 IV - 输入 BST

两数值和进阶版,可以用中序遍历把树记录到一个list里面

还有两道Trie的题,挺有意思的

好的,树的刷完了

相关文章

网友评论

      本文标题:Leetcode day1 树

      本文链接:https://www.haomeiwen.com/subject/safhfhtx.html