classSolution{int gap =Integer.MAX_VALUE;TreeNode pre;publicintgetMinimumDifference(TreeNode root){travelTree(root);return gap;}publicvoidtravelTree(TreeNode node){if(node ==null)return;travelTree(node.left);if(pre!=null){
gap =Math.min(gap,node.val-pre.val);}
pre = node;travelTree(node.right);}}
501. 二叉搜索树中的众数
classSolution{List<Integer> list =newArrayList<>();int maxSize =0;int count =0;TreeNode pre =null;publicint[]findMode(TreeNode root){travelTree(root);int[] res =newint[list.size()];for(int i =0; i < list.size(); i++){
res[i]= list.get(i);}return res;}publicvoidtravelTree(TreeNode node){if(node ==null)return;travelTree(node.left);if(pre ==null|| node.val != pre.val){
count =1;}else{
count++;}if(count == maxSize){
list.add(node.val);}elseif(count > maxSize){
list.clear();
list.add(node.val);
maxSize = count;}
pre = node;travelTree(node.right);}}
236. 二叉树的最近公共祖先
classSolution{publicTreeNodelowestCommonAncestor(TreeNode root,TreeNode p,TreeNode q){if(root ==null)returnnull;if(root == p || root == q)return root;TreeNode left =lowestCommonAncestor(root.left, p, q);TreeNode right =lowestCommonAncestor(root.right, p, q);if(left !=null&& right !=null)return root;if(left ==null&& right !=null){return right;}elseif(left !=null&& right ==null){return left;}else{returnnull;}}}