目前,我正在开发一个程序,其中一个步骤是检查一个叶子 c 是否与二叉树 T 中的另外两个叶子 a 和 b 位于同一子树中。我目前的方法如下:首先,找到T中每对叶子的LCA,并将其存储在字典中。然后,对于树中的每个节点,找到作为其后代的所有叶子,并将其存储在字典中。然后当我需要确定c是否与a和b在同一个子树中时,我找到a和b的LCA,并检查c是否是它的后代。
我需要对许多不同的 a 和 b 对运行此步骤,并在具有多达 600 个叶子的二叉树上执行此操作,那么是否有更快的算法,或者使用更少内存的算法来完成相同的任务?谢谢。