leetcode101

摘要:
=null){floor.Add;Q.Enqueue;count++;}否则{floor.Add(“x”);}}returnfloor;}publicboolIsSymmetric{if{returntrue;}否则{Q.Enqueue;varstr=GetFloorString();intindex=0;//起始索引varxcount=0;//{xcount=0;varl=newList()的LEN长度;//str.Substring;{l.Add;}varhalflen=LEN/2;varl1=newList<string>();对于{l1.Add;}//vars2=s.Substring;varl2=newList<string>();对于{l2.Add;}l2.Reverse();vars1=“”;vars2=“”;对于{s1+=l1[i];}对于{s2+=l2[i],}如果(s1!
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left;
 *     public TreeNode right;
 *     public TreeNode(int x) { val = x; }
 * }
 */
public classSolution {
    Queue<TreeNode> Q = new Queue<TreeNode>();
        private List<string>GetFloorString()
        {
            var floor = new List<string>();
            var count = 0;
            while (Q.Count > 0)
            {
                var n =Q.Dequeue();
                if (n.left != null)
                {
                    floor.Add(n.left.val.ToString());
                    Q.Enqueue(n.left);
                    count++;
                }
                else
                {
                    floor.Add("x");
                }
                if (n.right != null)
                {
                    floor.Add(n.right.val.ToString());
                    Q.Enqueue(n.right);
                    count++;
                }
                else
                {
                    floor.Add("x");
                }
            }
            returnfloor;
        }
        public boolIsSymmetric(TreeNode root)
        {
            if (root == null)
            {
                return true;
            }
            else
            {
                Q.Enqueue(root);
                var str =GetFloorString();
                int index = 0;//起始索引
                var xcount = 0;
                //len长度
                for (int len = 2; index + len <= str.Count && len > 0; len = 2 * (len -xcount))
                {
                    xcount = 0;
                    var l = new List<string>();//str.Substring(index, len);
                    for (int i = index; i < index + len; i++)
                    {
                        l.Add(str[i]);
                    }
                    var halflen = len / 2;
                    var l1 = new List<string>();
                    for (int i = 0; i < halflen; i++)
                    {
                        l1.Add(l[i]);
                    }
                    //var s2 = s.Substring(halflen, halflen);
                    var l2 = new List<string>();
                    for (int i = halflen; i < halflen + halflen; i++)
                    {
                        l2.Add(l[i]);
                    }
                    l2.Reverse();
                    var s1 = "";
                    var s2 = "";
                    for (int i = 0; i < l1.Count; i++)
                    {
                        s1 +=l1[i];
                    }
                    for (int i = 0; i < l2.Count; i++)
                    {
                        s2 +=l2[i];
                    }
                    if (s1 !=s2)
                    {
                        return false;
                    }
                    foreach (var c inl)
                    {
                        if (c == "x")
                        {
                            xcount++;
                        }
                    }
                    index = index +len;
                }
                return true;
            }
        }
}

https://leetcode.com/problems/symmetric-tree/#/description

补充一个python的实现:

1 classSolution:
2     def isSymmetric(self, root: 'TreeNode') -> 'bool':
3         if root ==None:
4             returnTrue
5         returnself.isSymmetric2(root.left,root.right)
6         
7 def isSymmetric2(self,left,right):
8         if left == None and right ==None:
9             returnTrue
10         if left == None or right ==None:
11             returnFalse
12         if left.val !=right.val:
13             returnFalse
14         return self.isSymmetric2(left.left,right.right) and self.isSymmetric2(left.right,right.left)

免责声明:文章转载自《leetcode101》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android避免OOM(内存优化)确认oracle数据库错误日志文件位置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Delphi国内优秀网站及开源项目

它被设计为与Delphi2010或更高版本一起使用,它使用了旧版Delphi中没有的语言/RTL功能。https://github.com/VSoftTechnologies/DUnitXDelphiIDEColorizerDelphiIDEColorizer是一个插件,它可以使RADStudioIDE的工作空间https://github.com/RRUZ...

甲骨文ARM架构云服务器部署宝塔+.net 5.0

前言前段时间,甲骨文推出了一款采用ARM架构的免费服务器,可以申请永久免费的4核、24GB内存、4G带宽,非常棒。然而,由于ARM架构的CPU。例如,编译和安装MySQL 5.7是可以的,所以不需要麻烦。创建后,ssh被连接并切换到根帐户sudo-i II。安装宝塔。创建服务器。更新包并安装BBR后,您可以使用官方脚本yu_install-wget&...

电脑不识别USB blaster驱动问题

电脑不识别USB blaster,如下图: 解决办法:手动更新...

scan chain的原理和实现——5.UDTP

UDTP(用户定义的测试点)指示DFTC在设计中用户指定的位置插入控制点和观察点。1.为什么使用UDTP?修复不可控的时钟和/或异步输入;增加设计的测试覆盖率;减少模式数量2.UDTP类型① 力0、力1、力01、力z0、力z1、力z01②控制_ 0...

Redis的安装和简单使用

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。Redis安装1、要安装Redis,首先要获取安装包。这是访问Redis时所需的密码,一般测试情况下可以不用设定密码。再在右侧找到Redis名称的服务,查看...

C#实现图片的无损压缩

//////图像缩略图处理//////图像源数据///压缩质量1-100///缩略图的宽///缩略图的高///publicstaticbyte[]ConvertToThumbnail{byte[]bs=null;try{if(bytes!...