求满二叉树两个节点之间的最短距离

文章介绍了如何在给定的满二叉树中,通过`FindPath`和`QuickFindPath`方法找到两个节点之间的最短路径,包括示例代码实现和路径打印功能。

求满二叉树两个节点之间的最短距离

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))
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值