530.二叉搜索树最小绝对差236.二叉树最近公共祖先

67 阅读1分钟

530.二叉搜索树最小绝对差

class Solution {
    TreeNode pre;
    int result = Integer.MAX_VALUE;
    public int getMinimumDifference(TreeNode root) {
        if(root == null) return 0;
        traversal(root);
        return result;
    }
    public void traversal(TreeNode node){
        if(node == null) return;
        traversal(node.left);
        if(pre != null){
            result = Math.min(result, node.val - pre.val);
        }
        pre = node;
        traversal(node.right);
    }
}

236.二叉树最近公共祖先

class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null || 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 null;
        }else if(left == null && right != null){
            return right;
        }else if(left != null && right == null){
            return left;
        }else{
            return root;
        }
    }
}