zoukankan      html  css  js  c++  java
  • 剑指Offer的学习笔记(C#篇)-- 对称的二叉树

    题目描述

    请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

    一 . 题目分析

            递归法。

            一、空树判断,单独搞出来。

            二、非空树。

                   递归:一个递归+三个递归停止条件

    二 . 代码实现

    class Solution
    {
        public bool isSymmetrical(TreeNode pRoot)
        {
            // write code here
            //空树判定
            if (pRoot == null)
            {
                return true;
            }
            else
            //输入根节点的左右节点
            {
                return helper(pRoot.left, pRoot.right);
            }
        }
         
        private bool helper(TreeNode n1, TreeNode n2)
        {
            //递归停止条件一:(对称条件)、没有子节点了!
            if(n1 == null && n2 == null)
                return true;
            //递归停止条件二:(非对称条件)、左右节点只有一个是空的
            if(n1 == null || n2 == null)
                return false;
            //递归停止条件三:(非对称条件)、左右对应节点不一样
            if(n1.val != n2.val)
                return false;
            //递归方法
            return helper(n1.left, n2.right) && helper(n1.right, n2.left);
        }
    }
  • 相关阅读:
    线程池execute执行顺序
    三个线程交替打印1到100
    mysql优化
    最大回文子串
    AOP实现日志收集和记录
    LoadingCache缓存使用(LoadingCache)
    springboot项目在idea中实现热部署
    idea破解
    linux常用命令
    Oracle的分条件计数COUNT(我的条件),由浅入深
  • 原文地址:https://www.cnblogs.com/WeiMLing/p/10970469.html
Copyright © 2011-2022 走看看