如何确定二叉树的根节点 如何求一个二叉排序树两个节点的公共祖先?

如何求一个二叉排序树两个节点的公共祖先?搜索二叉树的特点:任意一个节点的左子树中所有节点的值都小于该节点的值,右子树中所有节点的值都大于该节点的值。要解决此问题:从树的根节点开始,比较两个节点。如果当

如何求一个二叉排序树两个节点的公共祖先?

搜索二叉树的特点:任意一个节点的左子树中所有节点的值都小于该节点的值,右子树中所有节点的值都大于该节点的值。

要解决此问题:

从树的根节点开始,比较两个节点。如果当前节点的值大于两个节点的值,则两个节点最近的共同祖先节点必须在该节点的左子树中,则下一步是遍历当前节点的左子树;

如果当前节点的值小于两个节点的值,则最近的共同祖先节点两个节点的节点必须在该节点的左子树中祖先节点必须在该节点的右子树中,下一步是遍历当前节点的右子树,直到找到第一个值为2为止

二叉排序树也称为二叉搜索树

算法步骤:[S1:如果树为空(第一个元素到达),根节点用该元素建立

S2:二进制搜索到叶节点

S2.1:如果叶节点关键字大于待插入节点关键字,则将待插入节点的关键字设为其左子项

否则,成为它的右子级

S3:重复步骤S2,直到所有节点都被插入

时间复杂度:通过二进制搜索找到要插入位置的每个节点的复杂度为O(LGN),因此总复杂度为O(nlgn)]//希望对您有用