236. 二叉树的最近公共祖先

2019-12-30  本文已影响0人  Andysys
    private TreeNode ans = null;

    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        recurseTreeNode(root, p, q);
        return ans;
    }

    private boolean recurseTreeNode(TreeNode current, TreeNode p, TreeNode q) {
        if (current == null) {
            return false;
        }

        int left = recurseTreeNode(current.left, p, q) ? 1 : 0;
        int right = recurseTreeNode(current.right, p, q) ? 1: 0;
        int mid = (current == p || current == q) ? 1 : 0;

        int sum = left + right + mid;
        if (sum >= 2) {
            ans = current;
        }
        return sum > 0;
    }
上一篇 下一篇

猜你喜欢

热点阅读