Get Keys In Binary Search Tree In Given Range - Easy
发布时间:2020-12-14 05:16:25 所属栏目:大数据 来源:网络整理
导读:Get the list of keys in a given binary search tree in a given range[min,max] in ascending order,both min and max are inclusive. Examples ? ? ? ? 5 ? ? ? / ? ? ? ? 3 ? ? ? ?8 ? / ? ? ? ? ? ?1 ? ? 4 ? ? ? ?11 get the keys in [2,5] in asc
Get the list of keys in a given binary search tree in a given range[min,max] in ascending order,both min and max are inclusive. Examples ? ? ? ? 5 ? ? ? / ? ? ? ? 3 ? ? ? ?8 ? / ? ? ? ? ? ?1 ? ? 4 ? ? ? ?11 get the keys in [2,5] in ascending order,result is??[3,4,5] Corner Cases
? ? inorder traversal + 剪枝 如果当前node.val > min,走左子树;如果当前node.val在min~max之间,加入res中;如果当前node.val < max,走右子树 time: O(h + # of nodes in [min,max]),space: O(h) /** * public class TreeNode { * public int key; * public TreeNode left; * public TreeNode right; * public TreeNode(int key) { * this.key = key; * } * } */ public class Solution { public List<Integer> getRange(TreeNode root,int min,int max) { // Write your solution here List<Integer> res = new ArrayList<>(); if(root == null || min > max) { return res; } helper(root,min,max,res); return res; } public void helper(TreeNode root,int max,List<Integer> res) { if(root == null) { return; } if(root.key > min) { helper(root.left,res); } if(root.key >= min && root.key <= max) { res.add(root.key); } if(root.key < max){ helper(root.right,res); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |