#include <stdio.h>
typedef struct _treeNode{
struct _treeNode *left, *right;
int data;
}treeNode;
treeNode *findPorQ(treeNode *root, treeNode *p, treeNode *q){
if(root==NUll || root==p || root==q)return root;
treeNode *left = findPorQ(root->left, p, q);
treeNode *right = findPorQ(root->right, p, q);
return left == NULL ? right : (right == NULL ? left : root);
}
如果是二叉搜索树,则优化如下
#include <stdio.h>
typedef struct _treeNode{
struct _treeNode *left, *right;
int data;
}treeNode;
treeNode *findPorQ(treeNode *root, treeNode *p, treeNode *q){
if(p->data < root->data && q->data<root->data)
return findPorQ(root->left, p, q);
if(p->data > root->data && q->data > root->data)
return findPorQ(root->right, p, q);
return root;
}
本文介绍了一种在二叉树中寻找两个节点的最低公共祖先的有效算法。首先通过递归方式查找,然后根据二叉搜索树特性进行优化,提高了查找效率。

被折叠的 条评论
为什么被折叠?



