二叉树最近公共祖先

LCA算法:后续遍历+Flag

 1 int Solution::search_lca(TreeNode *root, TreeNode *node1, TreeNode *node2, int &flag, TreeNode *pres)
 2 {//查找二叉树公共祖先
 3     if (root == NULL)
 4         return 0;
 5     int ans = (root->val == node1->val || root->val == node2->val)
 6         + search_lca(root->left, node1, node2, flag, pres)
 7         + search_lca(root->right, node1, node2, flag, pres);
 8     if (ans == 2 && flag == 0){
 9         pres = root;
10         flag = 1;
11     }
12     return ans;
13 }

 

posted on 2014-08-15 15:10  雨歌_sky  阅读(253)  评论(0编辑  收藏  举报

导航