C++详解Leetcode:101. Symmetric Tree

来源:互联网 发布:全天重庆时时计划数据 编辑:程序博客网 时间:2024/06/05 05:14

原题

这里写图片描述

思路

主要就是判断一个二叉树是否左右对称,可以通过一个递归函数判断,将当前二叉树设为p,与之相同的另外一个二叉树设为q,通过递归比较p->left和q->right,p->right和q->left,最后得出二叉树是否左右对称

code

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isSymmetric(TreeNode* root) {       //这里将root复用即可        return Equal(root, root);    }    bool Equal(TreeNode* p, TreeNode* q)    {        if (!p && !q)        {            return true;        }        else if (!p && q || p && !q || p->val != q->val)        {            return false;        }        else        {            return (Equal(p->left, q->right) && Equal(p->right, q->left));        }    }};
原创粉丝点击