回溯-最近公共祖先
package tree; public class CommonAncestor { /** * 定义TreeNode */ private static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } private TreeNode lca = null; // 最近公共祖先 TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { containNode(root, p, q); return lca; } private boolean containNode(TreeNode root, TreeNode p, TreeNode q) { // 终止条件 if (root == null) { return false; } if (root == p || root == q) { return true; } boolean left = containNode(root.left, p, q); boolean right = containNode(root.right, p, q); if (left && right) { lca = root; } return left || right; } }
posted on 2020-09-27 18:01 www_practice 阅读(113) 评论(0) 编辑 收藏 举报