第一题 272. Closest Binary Search Tree Value II
题目描述
在BST中找出k个距离target最近的点
算法
这题先用两个stack,利用中序遍历和反中序遍历,将值按照顺序存储好。然后分别按顺序弹出
|
|
第二题 235. Lowest Common Ancestor of a Binary Search Tree
题目描述
给定一棵二叉搜索树(BST),寻找BST中两个给定节点的最近公共祖先(LCA)。
根据维基百科对LCA的定义:“节点v与w的最近公共祖先是树T上同时拥有v与w作为后继的最低节点(我们允许将一个节点当做其本身的后继)”
例如,题目描述的样例中,节点2和8的最近公共祖先(LCA)是6。另一个例子,节点2和4的LCA是2,因为根据LCA的定义,一个节点可以是其本身的后继。
算法
|
|
第三题 236. Lowest Common Ancestor of a Binary Tree
题目描述
给定一棵二叉树,寻找其中两个给定节点的最近公共祖先(LCA)。
根据维基百科对LCA的定义:“节点v与w的最近公共祖先是树T上同时拥有v与w作为后继的最低节点(我们允许将一个节点当做其本身的后继)”
例如,题目描述的样例中,节点5和1的最近公共祖先(LCA)是3。另一个例子,节点5和4的LCA是5,因为根据LCA的定义,一个节点可以是其本身的后继。
算法
只有两种情况,一种是p和q分别在两边,那么当前节点即为共同的ancester。另一种是一个节点在另一个下面,那么在上面那个节点即为共同的ancester。
我们通过后序遍历,查看左右能否找到需要的p和q,如果找到,那么当前节点即为ancester。不能的话然后找到的那一边
|
|
第四题 101. Symmetric Tree
题目描述
查看一棵树是否是对称树
算法
利用回溯,挨个检查
|
|
第五题 98. Validate Binary Search Tree
题目描述
查看一棵树是否是合理的二差搜索树
算法
Recursive
|
|
Iterative
|
|
第六题 501. Find Mode in Binary Search Tree
题目描述
给定一棵包含重复元素的二叉树。寻找其中的所有众数。
注意:二叉树可能包含多个众数,以任意顺序返回即可。
算法
如果想要O(1)的空间复杂度,那么我们需要遍历两次整个树,然后记录下有多少个数出现了最大次数。然后初始化结果并进行输出。
关键的思路在于,对于这种变形的BST,中序遍历仍然可以按照大小,进行输出
|
|
第七题 103. Binary Tree Zigzag Level Order Traversal
题目描述
对一个二叉树进行z行按行输出
算法
层次遍历
|
|
第八题 129. Sum Root to Leaf Numbers
题目描述
找到所有根到叶节点的和
算法
|
|
|
|
第九题 257. Binary Tree Paths
算法
遍历整课数,并将root到每一个leaf的路径进行输出
算法
|
|