二叉樹中任意兩個節點的最近公共祖先
阿新 • • 發佈:2017-10-21
stc node comm cnblogs blog style == spa 發現
public class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { //發現目標節點則通過返回值標記該子樹發現了某個目標結點 if(root == null || root == p || root == q) return root; //查看左子樹中是否有目標結點,沒有為null TreeNode left = lowestCommonAncestor(root.left, p, q);//查看右子樹是否有目標節點,沒有為null TreeNode right = lowestCommonAncestor(root.right, p, q); //都不為空,說明做右子樹都有目標結點,則公共祖先就是本身 if(left!=null&&right!=null) return root; //如果發現了目標節點,則繼續向上標記為該目標節點 return left == null ? right : left; } }
感覺很奇妙
二叉樹中任意兩個節點的最近公共祖先