第一题 437. Path Sum III
题目描述
给定一颗二叉树,每个节点包含一个整数值。
计算所有和为给定值的路径个数。
路径不一定以根开始,也不一定以叶子结束,但是必须自上而下(从双亲结点到孩子节点)
树节点个数不超过1000,并且节点值的范围在-1,000,000到1,000,000之间。
算法
双回溯
由于需要遍历所有子树,因此采用双重回溯的办法,因此对所有子树的可能性进行遍历
HashMap(PreSum)
|
|
第二题 637. Average of Levels in Binary Tree
题目描述
输出每一层的平均值
算法
层次遍历
|
|
第三题 102. Binary Tree Level Order Traversal
题目描述
层次遍历一课树
算法
|
|
第四题 107. Binary Tree Level Order Traversal II
题目描述
从底层到上层,层次遍历一棵树
算法
|
|
第五题 449. Serialize and Deserialize BST
题目描述
序列化是指将数据结构或者对象转换为比特序列,使其可以保存在文件或者内存缓冲区中,也可以通过网络链路传输给本机或者其他计算机,在之后进行重构。
设计算法序列化/反序列化一棵二叉搜索树。对序列化/反序列化算法的具体实现没有限制。你需要确保一棵二叉树可以序列化成字符串,字符串可以反序列化为原始二叉树。
编码的字符串应该尽可能紧凑。
注意:不要使用类成员/全局变量/静态变量来保存状态。你的序列化/反序列化算法应该是无状态的
算法
算法最核心的地方是利用queue的特性,和BST的特性。利用队列,回溯的构建一个二叉搜索树
|
|
第六题 173. Binary Search Tree Iterator
题目描述
实现一个二叉搜索树(BST)的迭代器。你的迭代器会使用BST的根节点初始化。
调用next()会返回BST中下一个最小的数字。
注意:next()和hasNext()应该满足平均O(1)时间复杂度和O(h)空间复杂度,其中h是树的高度
算法
利用stack,把个root的的所有左边节点推入stack中,然后进行pop操作,进行指向下一个节点的操作
|
|
第七题 285. Inorder Successor in BST
题目描述
找寻在中序遍历的情况下,在二叉搜索树中的下一个节点
算法
|
|
第八题 145. Binary Tree Postorder Traversal
题目描述
后序遍历
算法
利用插入在第一个位置的特性,进行循环
|
|
第九题 270. Closest Binary Search Tree Value
题目描述
找到离target
算法
Recursive
|
|
iterative
|
|