标签:tco 深度 方法 pre 自己的 公共祖先 思路 init 代码
236. 二叉树的最近公共祖先
思路:采用递归的方法 如果root == null || root == p|| root == q,返回 root。否则分别查找 root 的左右子树。若 left==null 返回right 若 right==null 返回left 若两者都非空,返回root。时间复杂度 o(N),空间复杂度 o(N)。
代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(!root||root==p||root==q) return root; TreeNode *l = lowestCommonAncestor(root->left, p, q); TreeNode *r = lowestCommonAncestor(root->right, p, q); if(!l) return r; if(!r) return l; return root; } };
标签:tco 深度 方法 pre 自己的 公共祖先 思路 init 代码
原文地址:https://www.cnblogs.com/jessica216/p/13520220.html