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);
        }
    }
  • 相关阅读:
    C语言-第32课
    typeof和clamp
    C语言void*和*p的使用
    C语言二级指针和一级指针
    C语言结构体变量成员之指针变量成员的坑
    控制硬件三部曲
    C语言const char*使用
    jiffies是什么
    TPO3-1 Architecture
    相关关系|相关系数|线性关系|
  • 原文地址:https://www.cnblogs.com/WeiMLing/p/10970469.html
Copyright © 2011-2022 走看看