通过递归LCA二叉树进行跟踪

时间:2018-07-08 00:30:45

标签: java binary-tree

有人可以帮助我跟踪此代码。我很难想象背对背的递归调用。

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    if (root == null) {
        return null;
    }

    if (root == p || root == q) {
        return root;
    }

    TreeNode l = lowestCommonAncestor(root.left,p,q);
    TreeNode r = lowestCommonAncestor(root.right,p,q);

    if (l != null && r != null){
        return root;
    }

    return l != null ? l:r;

}

1 个答案:

答案 0 :(得分:0)

对lowerCommonAncestor的两次调用只是在树中向左遍历,然后在树中向右追溯,这称为深度优先搜索。 DFS node order