(树)判断一颗二叉树是否为镜像对称

  • 原题:https://www.nowcoder.com/practice/1b0b7f371eae4204bc4a7570c84c2de1?tpId=46&tqId=29077&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking
  • 思路:
    • //判断一个数是否为镜像对称:先判断根,在判断左右子树。如果左右子树都为空那就是,如果左右子树不是同时为空那就不是
          //当左右子树都存在的时候,判断他们的值是否相等,如果相等那么久递归的对他们的字节点判断(左边的左=右边的右;左边的右==右边的左)
  • 代码

    /**
     * Definition for binary tree
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        //判断一个数是否为镜像对称:先判断根,在判断左右子树。如果左右子树都为空那就是,如果左右子树不是同时为空那就不是
        //当左右子树都存在的时候,判断他们的值是否相等,如果相等那么久递归的对他们的字节点判断(左边的左=右边的右;左边的右==右边的左)
        bool isSymmetric(TreeNode *root) {
            if (!root)
                return true;
            return Symmetric(root->left, root->right);
        }
        bool Symmetric(TreeNode *left, TreeNode *right){
            if (!left && !right)
                return true;
            if (!left || !right)
                return false;
            if (left->val == right->val){
                return (Symmetric(left->left, right->right) && Symmetric(right->left, left->right));
            }
            return false;
        }
    };
时间: 2024-10-25 00:43:46

(树)判断一颗二叉树是否为镜像对称的相关文章

判断一颗二叉树是否为二叉平衡树 python 代码

输入一颗二叉树,判断这棵树是否为二叉平衡树.首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树.因此判断一颗二叉平衡树的关键在于求出左右子树的高度差,而二叉树的高度又是怎么定义的呢?二叉树的高度指的是从根节点到叶子节点所有路径上包含节点个数的最大值.所以我们可以得出,父亲节点的高度与左右子树高度的关系为:父亲节点的高度=max(左子树高度,右子树高度)+1,同时我们知道,叶子节点的高度值为1(或则0,这里定义1或者0对判断结

判断一颗二叉树是不是另外一颗的子结构

这是一道比较经典的题目.我先是在百度的在线笔试中遇到,然后发现剑指Offer上有原题.当然题目并不完全一样不过大致相同. 百度笔试是给你两个根节点判断第棵树是不是第一棵树的子树.剑指Offer是问你第二颗数是不是第一棵树的子结构(也就是说可是是第一棵二叉树的中间阶段). 笔试的时候恁是没完全通过测试案例,就差几个,实在也是不知道是什么问题.这次剑指Offer的在线测试中,发现他的描述不是很准确.我一开始以为空树是任何树的子结构,结果空树不是任何数的子结构. 第一版代码:算法复杂度是O(M * N

LeetCode 100 Same Tree(相同树判断)(二叉树、递归、栈和队列、深搜和宽搜)

翻译 给定两个二叉树,写一个函数检查他们是否相等. 两个二叉树如果结构上相同并且有相同的值,那么就认定他们是相等的. 原文 Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes have the same value. 分析 还

101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树

给定一个二叉树,检查它是否是它自己的镜像(即,围绕它的中心对称).例如,这个二叉树 [1,2,2,3,4,4,3] 是对称的.    1   / \  2   2 / \ / \3  4 4  3但是下面这个 [1,2,2,null,3,null,3] 则不是:    1   / \  2   2   \   \   3    3说明:如果你可以递归地和迭代地解决它就奖励你点数.详见:https://leetcode.com/problems/symmetric-tree/description

如何判断两颗二叉树是否相同

bool TreeTraversal(TreeNode *p, TreeNode *q){ if(!p&&!q) return true; bool result=false; if (p&&q) { if (p->val!=q->val) result = false; else result = isSameTree(p->left,q->left)&&isSameTree(p->right,q->right); }e

判断一棵二叉树是否为BST,一棵树是否为完全二叉树

对于一颗搜索二叉树,最简单的方法就是用中序遍历,看是不是一个递增数列,如果是则是一颗搜索二叉树,如果不是则不是搜索二叉树.在这里用一个lastVisit去记录上一次搜索到的节点.整个过程就是先找到最左下角的节点,更新这个lastVisit为这个节点的值,然后按照中序遍历依次更新即可.代码如下. 1 #include <stdio.h> 2 #include <climits> 3 4 //二叉树结点 5 typedef struct binary_tree_node_t{ 6 bi

LeetCode:Same Tree - 判断两颗树是否相等

1.题目名称 Same Tree(判断两棵树是否相等) 2.题目地址 https://leetcode.com/problems/same-tree/ 3.题目内容 英文:Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identical and the nodes h

【3】输入一颗二叉树判断是不是平衡二叉树

题目:输入一颗二叉树的根结点,判断该二叉树是不是平衡二叉树.平衡二叉树是满足所有结点的左右子树的高度差不超过1的二叉树 方案一:遍历数组的每一个结点,对每一个结点求它的左右子树的高度并进行判断.时间复杂度大于O(n),小于O(n^2)效率较低,因为有很多点需要重复访问. //二叉树的结点 struct BinaryTreeNode{ int m_value; BinaryTreeNode *m_lson; BinaryTreeNode *m_rson; }; //求二叉树的深度 int GetD

数据结构第三部分:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算

参考:浙大数据结构(陈越.何钦铭)课件 1.树与树的表示 什么是树? 客观世界中许多事物存在层次关系 人类社会家谱 社会组织结构 图书信息管理 分层次组织在管理上具有更高的效率! 数据管理的基本操作之一:查找(根据某个给定关键字K,从集合R 中找出关键字与K 相同的记录).一个自然的问题就是,如何实现有效率的查找? 静态查找:集合中记录是固定的,没有插入和删除操作,只有查找 动态查找:集合中记录是动态变化的,除查找,还可能发生插入和删除 静态查找——方法一:顺序查找(时间复杂度O(n)) int