对称二叉树

如果以根为中心,整棵树关于根对称的,则返回true,否则为false

递归版:

      public static bool IsSymmetric(TreeNode root)
        {
            if (root == null) return true;
            return IsSymmetric(root.Left,root.Right);
        }
        public static bool IsSymmetric(TreeNode p,TreeNode q)
        {
            if (p == null && q == null) return true;
            if (p == null || q == null) return false;
            return p.value == q.value && IsSymmetric(p.Left, q.Right) && IsSymmetric(p.Right, q.Left);
        }

迭代版:

public static bool IsSymmetricForCSharp(TreeNode root)
        {
            if (root == null) return true;

            Stack<TreeNode> s = new Stack<TreeNode>();
            s.Push(root.Left);
            s.Push(root.Right);
            while (s.Count > 0)
            {
                TreeNode p = s.Pop();
                TreeNode q = s.Pop();
                if (p == null && q == null) return true;
                if (p == null || q == null) return false;
                if (p.value != q.value) return false;
                s.Push(p.Left);
                s.Push(q.Right);
                s.Push(q.Left);
                s.Push(p.Right);
            }
            return true;


        }

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页