问题描述
给定一个二叉查找树和范围[k1, k2]。按照升序返回给定范围内的节点值。
重点
二叉树数据的序列化及数据排序
主要考点
二叉树的查找范围的间值匹配
算法逻辑
- 判断及确认当前获取的节点是否为空
- 取得二叉树当前节点的值并在数据范围内进行匹配
- 将符合范围区间的值存入集合
- 若当前节点取值小于最小范围,则向左子树递归,反之则向右子树递归
实现代码
List<Integer> re = new ArrayList();
public List<Integer> searchRange(TreeNode root, int k1, int k2) {
if(root != null){
int v = root.val;
if(v >= k1 && v <= k2){
re.add(v);
}
if(v>k1){
searchRange(root.left,k1,k2);
}
if(v<k2){
searchRange(root.right,k1,k2);
}
}
return re;
}