二叉树两节点的最近公共祖先

    科技2025-11-08  18

    题目描述

    给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 

    示例1

    输入

    [3,5,1,6,2,0,8,#,#,7,4],5,1

    输出

    3 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @param o1 int整型 * @param o2 int整型 * @return int整型 */ TreeNode* CommonAcestor(TreeNode* root, int o1, int o2){ if(root==NULL || root->val==o1 || root->val==o2) return root; TreeNode* left = CommonAcestor(root->left, o1, o2); TreeNode* right = CommonAcestor(root->right, o1, o2); if(left==NULL) return right; if(right==NULL) return left; return root; } int lowestCommonAncestor(TreeNode* root, int o1, int o2) { // write code here return CommonAcestor(root, o1, o2)->val; } };

     

    Processed: 0.009, SQL: 8