简单算法 在二叉树中找到两个节点的最近公共祖先(java)
描述
给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。
注:本题保证二叉树中每个节点的val值均不相同。
想法:利用递归查找o1,和o2位置,再通过判断来选择其公共祖先结点
public intlowestCommonAncestor(TreeNode root, int o1, int o2){// write code herereturnfindfather(root, o1, o2).val;}public TreeNodefindfather(TreeNode root, int o1, int o2){if(root==null|| root.val== o1|| root.val== o2)return root;
TreeNode left=findfather( root.left,o1, o2);
TreeNode right=findfather( root.right,o1, o2);if(left==null)return right;if(right==null)return left;return root;}