求满二叉树两个节点之间的最短距离
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FirstSolver
{
internal class Program
{
static void Main(string[] args)
{
BinaryTreeNode<int> root1 = FullBinaryTree.CreateTree(1, 4);
Console.WriteLine(FullBinaryTree.PrintTree(root1));
Console.WriteLine();
BinaryTreeNode<int> root2 = FullBinaryTree.CreateTree(101, 4);
Console.WriteLine(FullBinaryTree.PrintTree(root2));
Console.WriteLine();
BinaryTreeNode<int> root3 = FullBinaryTree.CreateTree(201, 4);
Console.WriteLine(FullBinaryTree.PrintTree(root3));
Console.WriteLine();
root1.ParentNode = root2;
root2.ParentNode = root3;
root3.ParentNode = root1;
BinaryTreeNode<int> nodeA = FullBinaryTree.FindNode(root1, 5);
BinaryTreeNode<int> nodeB = FullBinaryTree.FindNode(root1, 7);
Console.WriteLine($"[A({
nodeA.Value})]->[B({
nodeB.Value})]");
Stack<BinaryTreeNode<int>> path = FullBinaryTree.FindPath(nodeA, nodeB);
Console.WriteLine(FullBinaryTree.PrintPath(path));
Console.WriteLine(FullBinaryTree.PrintPath(FullBinaryTree.QuickFindPath(nodeA, nodeB)));
Console.WriteLine();
nodeB = FullBinaryTree.FindNode(root2, 107);
Console.WriteLine($"[A({
nodeA.Value})]->[B({
nodeB.Value})]");
path = FullBinaryTree.FindPath(nodeA, nodeB);
Console.WriteLine(FullBinaryTree.PrintPath(path));
Console.WriteLine(FullBinaryTree.PrintPath(FullBinaryTree.QuickFindPath(nodeA, nodeB)));
Console.WriteLine();
nodeB = FullBinaryTree.FindNode(root3, 207);
Console.WriteLine($"[A({
nodeA.Value})]->[B({
nodeB.Value})]");
path = FullBinaryTree.FindPath(nodeA, nodeB);
Console.WriteLine(FullBinaryTree.PrintPath(path));
Console.WriteLine(FullBinaryTree.PrintPath(FullBinaryTree.QuickFindPath(nodeA, nodeB))