原标题:191103题
原文来自:CSDN 原文链接:https://blog.csdn.net/ShenHang_/article/details/102870913
思路:
这题脑子画个图想想就可以明白了。每个结点都会触发两个新的递归,只要任意一个子递归里返回false,最终结果均为false。
#include<iostream>
using namespace std;
//画个图想想就明白了
struct TreeNode {
int value;
TreeNode*left;
TreeNode*right;
TreeNode(int x = 0) :value(x), left(NULL), right(NULL) {}
};
class Solution {
public:
bool IsSymmetrical(TreeNode*proot)
{
if (proot == NULL)
return true;
return IsSymmetricalCore(proot, proot);
}
private:
bool IsSymmetricalCore(TreeNode*proot1, TreeNode*proot2)
{
if (proot1 == NULL&&proot2 == NULL)
return true;
if (proot1 == NULL || proot2 == NULL)
return false;
if (proot1->value != proot2->value)
return false;
//以上三个都是递归结束的条件
//接下来开始递归
return IsSymmetricalCore(proot1->left, proot2->right) && IsSymmetricalCore(proot1->right, proot2->left);//核心
}
};
免责声明:本文来自互联网新闻客户端自媒体,不代表本网的观点和立场。
合作及投稿邮箱:E-mail:editor@tusaishared.com