部队那题就是一个层序遍历的过程,每次生成一个TreeNode,判断能不能再分就是判断(value-k)%2=?0,可以再分就new一个left一个right就行;代码如下: package baidu; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class TreeNode{     int val;     TreeNode left = null;     TreeNode right = null;     public TreeNode(int val) {         this.val = val;     } } public class Main {          public static void main(String[] args) {         Scanner scanner = new Scanner(System.in);         int n = scanner.nextInt();         int k = scanner.nextInt();         int result = 0;         TreeNode root = new TreeNode(n);         Queue<TreeNode> queue = new LinkedList<TreeNode>();         queue.add(root);                  while(!queue.isEmpty()) {             int cnt = queue.size();             for(int i=0;i<cnt;i++) {                 TreeNode cur = queue.poll();                 if(cur.val>k&&(cur.val-k)%2==0) {                     TreeNode left = new TreeNode((cur.val-k)/2);                     TreeNode right = new TreeNode((cur.val+k)/2);                     cur.left = left;                     cur.right = right;                 }else {                     result++;                 }                 if(cur.left!=null) queue.add(cur.left);                 if(cur.right!=null) queue.add(cur.right);             }         }         System.out.println(result);     } }
点赞 2

相关推荐

不愿透露姓名的神秘牛友
07-23 14:18
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务