C++ 如何在二叉树中找到两个给定节点之间的路径

C++ 如何在二叉树中找到两个给定节点之间的路径,c++,c,tree,binary-tree,C++,C,Tree,Binary Tree,如何在节点4到5或4到6之间找到路径? 我知道如何找到从根到给定节点的路径,但不知道如何在两个随机节点之间找到路径。您可以选择从根到两个节点的两条路径,并删除公共子路径 if we have a tree given below: 1 / \ 2 3 / \ / \ 4 5 6 7 e、 g.对于示例中从5到9的路径,您将得到两条路径 12345和12379和 将发现3是最低的公共父节点。然后将从5开始的路径反转到公共父节点,并将其余

如何在节点4到5或4到6之间找到路径?
我知道如何找到从根到给定节点的路径,但不知道如何在两个随机节点之间找到路径。

您可以选择从根到两个节点的两条路径,并删除公共子路径

if we have a tree given below:



      1
     / \
    2   3
   / \  / \
  4  5 6  7  
e、 g.对于示例中从
5
9
的路径,您将得到两条路径
12345
12379

将发现
3
是最低的公共父节点。然后将从
5
开始的路径反转到公共父节点,并将其余路径附加到
9
5 4
+
3
+
7 9
->
5 4 3 7 9
您可以将这两条路径从根节点添加到两个节点并删除公共子路径

if we have a tree given below:



      1
     / \
    2   3
   / \  / \
  4  5 6  7  
e、 g.对于示例中从
5
9
的路径,您将得到两条路径
12345
12379

将发现
3
是最低的公共父节点。然后将从
5
开始的路径反转到公共父节点,并将其余路径附加到
9
5 4
+
3
+
7 9
->
5 4 3 7 9
您可以将这两条路径从根节点添加到两个节点并删除公共子路径

if we have a tree given below:



      1
     / \
    2   3
   / \  / \
  4  5 6  7  
e、 g.对于示例中从
5
9
的路径,您将得到两条路径
12345
12379

将发现
3
是最低的公共父节点。然后将从
5
开始的路径反转到公共父节点,并将其余路径附加到
9
5 4
+
3
+
7 9
->
5 4 3 7 9
您可以将这两条路径从根节点添加到两个节点并删除公共子路径

if we have a tree given below:



      1
     / \
    2   3
   / \  / \
  4  5 6  7  
e、 g.对于示例中从
5
9
的路径,您将得到两条路径
12345
12379


将发现
3
是最低的公共父节点。然后将从
5
开始的路径反转到公共父级,并将路径中的其余部分附加到
9
54
+
3
+
79
->
54379

如果它不是一个二叉树,而是一个普通树,其中没有数字值,而是一些颜色,就像红黑树一样,该怎么办@BeyelerStudios@ShefaliChaudhary同样的方法,只要你能搜索一个根路径,但是如果我们有一个树,其中根节点是黑色的,每个黑色节点有一个红色子节点,每个红色节点有一个黑色子节点,并且如果我们必须找到黑色节点btw第四到第五个节点,那么它就不起作用了,那么很难找到相同的公共路径对于其他节点以及3和4。@BeyelerStudios@ShefaliChaudhary您将如何识别示例中的不同节点?您必须能够识别节点以找到根路径-标识符不必是整数,甚至可能不具有可比性,但每个节点都必须是唯一可识别的(您始终可以强制搜索根路径).为什么你写的树与OP中的不同?如果它不是二叉树,而是一个普通的树,里面没有数字值,但是有一些颜色像红黑树呢@BeyelerStudios@ShefaliChaudhary同样的方法,只要你能搜索一个根路径,但是如果我们有一个树,其中根节点是黑色的,每个黑色节点有一个红色子节点,每个红色节点有一个黑色子节点,并且如果我们必须找到黑色节点btw第四到第五个节点,那么它就不起作用了,那么很难找到相同的公共路径对于其他节点以及3和4。@BeyelerStudios@ShefaliChaudhary您将如何识别示例中的不同节点?您必须能够识别节点以找到根路径-标识符不必是整数,甚至可能不具有可比性,但每个节点都必须是唯一可识别的(您始终可以强制搜索根路径).为什么你写的树与OP中的不同?如果它不是二叉树,而是一个普通的树,里面没有数字值,但是有一些颜色像红黑树呢@BeyelerStudios@ShefaliChaudhary同样的方法,只要你能搜索一个根路径,但是如果我们有一个树,其中根节点是黑色的,每个黑色节点有一个红色子节点,每个红色节点有一个黑色子节点,并且如果我们必须找到黑色节点btw第四到第五个节点,那么它就不起作用了,那么很难找到相同的公共路径对于其他节点以及3和4。@BeyelerStudios@ShefaliChaudhary您将如何识别示例中的不同节点?您必须能够识别节点以找到根路径-标识符不必是整数,甚至可能不具有可比性,但每个节点都必须是唯一可识别的(您始终可以强制搜索根路径).为什么你写的树与OP中的不同?如果它不是二叉树,而是一个普通的树,里面没有数字值,但是有一些颜色像红黑树呢@BeyelerStudios@ShefaliChaudhary同样的方法,只要你能搜索一个根路径,但是如果我们有一个树,其中根节点是黑色的,每个黑色节点有一个红色子节点,每个红色节点有一个黑色子节点,并且如果我们必须找到黑色节点btw第四到第五个节点,那么它就不起作用了,那么很难找到相同的公共路径对于其他节点以及3和4。@BeyelerStudios@ShefaliChaudhary您将如何识别示例中的不同节点?您必须能够识别节点以找到根路径-标识符不必是整数,它甚至可能不可比较,但每个节点都必须是唯一可识别的(您始终可以强制搜索根路径)。为什么您编写的树与OP中的不同?如果您问到有关算法的问题,然后标记为这样(C和C++都不适用)