第一题 96. Unique Binary Search Trees
题目描述
给定n,找出1, 2…n能组成的所有的Binary Search Tree的个数
算法
利用动态规划,记住每一个位置能够组成的二叉树的数量,进行不断叠加,最后得出答案
|
|
第二题 Unique Binary Search Trees II
题目描述
同前面题目一样,只不过现在需要找出所有的不同的子树
算法
对于中间的节点i,采用分治法。左边所有的可能是(start, i-1)右边为(i+1, end)每次切成更小的部分,然后进行树的创建
|
|
第三题 298. Binary Tree Longest Consecutive Sequence
题目描述
求一个二叉树中,最长的连续子树的长度。连续子树的长度定义为每次值的大小递增1
算法
每次检查当前的值是否满足上一个值加1,如果满足,递增count。并计算是否为最大值。直到遍历完整棵树为止
|
|
第四题 549. Binary Tree Longest Consecutive Sequence II
题目描述
给定二叉树,寻找其中最长的连续的整数路径。
特别的,路径可以递增/递减。例如[1,2,3,4] 和 [4,3,2,1]均有效,但是 [1,2,4,3] 无效。另外,路径的顺序不一定必须是父亲-孩子,也可以是孩子-父亲-孩子。
算法
如果想要一遍遍历就完成整个计算,我们需要知道每一个点,对于这个点左右分别有多少个降序序列和多少个升序序列,这样就能算出对于这个点,所能形成的最大长度是多少。因此,我们对于每一个点返回一个数组,分别记录了对于这个点,左右的升降序的最大长度,然后不断更新最大长度。最后返回
|
|
第五题 199. Binary Tree Right Side View
题目描述
给定一棵二叉树,假设你站在它的右侧,自顶向下地返回你可以观察到的节点的值。
例如,给定上面的二叉树,你应该返回[1, 3, 4]。
算法
BFS
|
|
DFS
|
|
第六题 116. Populating Next Right Pointers in Each Node
题目描述
给定一个完全平衡的二叉树,将所有的左边的节点指向其右边的节点。如果右边没有节点,则指向Null
算法
BFS
|
|
DFS
|
|
第七题 117. Populating Next Right Pointers in Each Node II
题目描述
现在情况仍然一样,只是二叉树并不是完全平衡的二叉树。
算法
利用三个指针,分别记录下head的位置,然后上一个的位置。之后找到合适的cur指针的位置
|
|
第八题 112. Path Sum
题目描述
在一课树种,查看从root到叶节点,有没有值等于target的路径,如果有,返回true否则返回false
算法
|
|
第九题 113. Path Sum II
题目描述
现在需要找出所有的等于target的路径
算法
|
|