我遇到了问题的修改版本(在二叉树中查找位于距离 k 处的两个节点)。
我试图定义两个节点之间的距离,我相信它是沿着树枝从节点 n1 到节点 n2 所需的最小节点数。
继续这个假设,我遇到了一种情况,我相信我需要知道每个节点是在根的左边还是右边。
案例1:如果n1和n2在不同的一侧,那么我爬到根部(距离等于节点n1的深度-假设n1在左边)然后我跑到右边的节点n2(距离等于n2的深度)。因此,如果两个节点 n1 和 n2 位于根的不同侧,则它们之间的最大距离是它们的深度之和。
案例 2:如果 n1 和 n2 在同一侧,我在树层次结构中找到一个共同的祖先,并重复相同的过程,考虑祖先是我在案例 1 中所做的根。最小距离将是总和它们从根开始的深度 - 共同祖先深度的 2 倍。
现在,这个问题是,我最终坦率地为每一对节点都这样做。如果我知道一对节点的距离超过这个,我可以优化它以不检查一对节点,但是如何?
请提出解决方案的其余部分。