中级农民
- 积分
- 102
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-12-19
- 最后登录
- 1970-1-1
|
请问楼主是这个意思么?还是有什么其他的要求呢?谢谢楼主了- public class Solution {
- // public static void main(String[] args) {
- // String data = "1,2,3,4,#,#,#,5,#,6,#,7,#,#,#";
- // TreeNode root = deserialize(data);
- // System.out.println(closest(root, 2));
- // }
- //
- // public static TreeNode deserialize(String data) {
- // if(data == null || data.length() == 0 || data.charAt(0) == '#'){
- // return null;
- // }
- // String[] vals = data.split(",");
- // Queue<TreeNode> queue = new LinkedList<>();
- // TreeNode root = new TreeNode(Integer.parseInt(vals[0]));
- // queue.offer(root);
- // for(int i = 1; i < vals.length; i ++){
- // TreeNode cur = queue.poll();
- // if(!vals[i].equals("#")){
- // cur.left = new TreeNode(Integer.parseInt(vals[i]));
- // queue.offer(cur.left);
- // }
- // i ++;
- // if(!vals[i].equals("#")){
- // cur.right = new TreeNode(Integer.parseInt(vals[i]));
- // queue.offer(cur.right);
- // }
- // }
- // return root;
- // }
-
- public static int closest(TreeNode root, int target){
- int[] closest = {Integer.MAX_VALUE};
- dfs(root, target, closest);
- return closest[0];
- }
-
- private static void dfs(TreeNode root, int target, int[] closest){
- if(root == null){
- return;
- }
- if(root.left == null && root.right == null){
- closest[0] = Math.abs(root.val - target) < Math.abs(closest[0] - target) ? root.val : closest[0];
- }
- dfs(root.left, target, closest);
- dfs(root.right, target, closest);
- }
- }
复制代码
补充内容 (2017-7-29 03:26):
理解错了。。应该是这道题http://www.geeksforgeeks.org/find-closest-leaf-binary-tree/ |
|