zoukankan      html  css  js  c++  java
  • 剑指offer-对称的二叉树

     

    题目描述

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

    解题思路

    注意到二叉树的前序遍历是从根节点开始,先遍历左子树再遍历右子树,由此可定义一种遍历顺序:先遍历根节点,再遍历右子树,最后是左子树,不妨称之为右序遍历。若该二叉树是对称的,那么意味着前序遍历的节点顺序与右序遍历应完全相同,包括所有指向NULL的子节点。因此可从根节点开始,递归的同时用两种顺序遍历二叉树,若遇到两节点都不为空,则判断两节点指向的值是否相同,不相同就返回false,相同的话再次递归向下分别进行遍历;若遇到两节点其中一个为NULL,说明不对称返回false;若遇到两节点都为NULL,返回true。

    代码

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };
    10 */
    11 class Solution {
    12 public:
    13     bool isSymmetrical(TreeNode* pRoot)
    14     {
    15         return Symm(pRoot,pRoot);
    16     }
    17     bool Symm(TreeNode* t1,TreeNode* t2){
    18         if(t1&&t2){
    19             if(t1->val!=t2->val)
    20                 return false;
    21             else
    22                 return Symm(t1->left,t2->right)&&Symm(t1->right,t2->left);
    23         }
    24         else if((t1&&!t2)||(!t1&&t2))
    25             return false;
    26         else
    27             return true;
    28     }
    29 };
  • 相关阅读:
    python 回调函数,最简单的例子
    python 构造一个可以返回多个值的函数
    python 使用函数参数注解
    Python 两个星号(**)的 参数
    python 什么是位置参数?
    sqlalchemy 的 ORM 与 Core 混合方式使用示例
    sqlalchemy 的 Core 方式使用示例
    sqlalchemy 的 ORM 方式使用示例
    sys.stdin的三种方式
    可以多分类的神经网络
  • 原文地址:https://www.cnblogs.com/wmx24/p/8806255.html
Copyright © 2011-2022 走看看