LeetCode.872: Leaf-Similar Trees

Two binary trees are considered leaf-similar if their leaf value sequence is the same.

Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.

 

answer:

public class Solution {
    public void TraverseNode(StringBuilder leafStr,TreeNode node)
        {
            if (node == null)
            {
                return;
            }
            if (node.left == null && node.right == null)
            {
                if (leafStr == null)
                {
                    leafStr = new StringBuilder();
                }
                leafStr.Append(node.val+"-");
            }
            if (node.left != null)
            {
                TraverseNode(leafStr, node.left);
            }
            if (node.right != null)
            {
                TraverseNode(leafStr, node.right);
            }
        }
        public bool LeafSimilar(TreeNode root1, TreeNode root2)
        {
            StringBuilder strLeaf1 = new StringBuilder();
            StringBuilder strLeaf2 = new StringBuilder();

            TraverseNode(strLeaf1, root1);
            TraverseNode(strLeaf2, root2);

            return strLeaf1.Equals(strLeaf2);
        }
}

 

内容概要:本文是一份关于“Soldiers”问题的算法设计与分析实践报告,研究如何将分布在网格点上的n个士兵重排成一条水平队列,使得总体移动步数最少。解决方案基于中位数性质,分别处理x和y方向的最优位置:y坐标取所有士兵y坐标的中位数,x坐标通过预调整(原始x坐标减去对应索引)后再取中位数来确定最佳起始位置。算法时间复杂度为O(n logn),主要开销来自三次排序操作;空间复杂度为O(n),用于存储坐标数据。实验验证了算法在样例输入下的正确性,得出最小移动步数为8,符合预期输出。报告还指出了实现过程中常见的索引处理错误及偶数情况下中位数选择的一致性问题,并建议加强极端情况的测试覆盖。; 适合人群:具备一定算法基础、正在学习算法设计与分析的计算机相关专业学生或初级开发者,尤其是对中位数优化、贪心策略和排序应用感兴趣的人员。; 使用场景及目标:①掌握利用中位数求解曼哈顿距离最小和的经典方法;②理解如何将二维问题分解为两个独立的一维问题进行优化;③学习排序与索引变换在实际算法中的巧妙应用;④提升对边界条件和代码细节的调试能力。; 阅读建议:此资源侧重于算法思想的理解与实现细节的剖析,建议读者结合代码逐步调试,重点关注x坐标调整与重新排序的过程,同时自行构造多种测试用例(包括边界和极端情况)以加深理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值