2016 - 2024

感恩一路有你

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

浏览量:1831 时间:2021-03-17 02:13:17 作者:admin

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

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

要解决此问题:

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

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

您可能有一个思维惯性,即在visit()中获得的序列就是路径。事实上,正确的想法是观察堆栈中的序列。当遍历二叉树时,使用堆栈。当使用post顺序遍历到目标节点n时,堆栈中的序列是n节点的所有父节点(堆栈是一个数组)。可以按以下顺序绘制一棵二叉树来遍历它。注意堆栈中的元素,而不是visit()元素

在二叉树中有两个结点m和n,如果m是n的祖先,可以找到从m到n的路径的遍历方式是?

如果二叉树是Trident链表存储或顺序存储,您可以通过从两个节点到根节点快速找到它。如果是二进制链表存储,可以使用非递归顺序遍历。分别遍历两个节点时,比较当时栈中的情况

二叉树中查找某个节点 求二叉树给定节点的所有祖先 二叉树最近公共父节点

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。