leetcode236-二叉树的最近公共祖先
题目:
例如,(6, 4)的公共祖先是5,(4, 5)的公共祖先是5
分析:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == NULL || p == root || q == root) return root; // 是否有p, q出现 TreeNode* l = lowestCommonAncestor(root->left, p, q); TreeNode* r = lowestCommonAncestor(root->right, p, q); if(l == NULL && r == NULL) return NULL; else if(l == NULL && r) return r; else if(l && r == NULL) return l; else return root; // 在两边都出现了 }
另一种不太方便的方法是先遍历一遍记录每个节点的父节点。
参考链接:
2. https://blog.csdn.net/qq_28114615/article/details/85715017
个性签名:时间会解决一切