トピック
対称二分木判定
トピックの要件
例
答え
方法 1、
再帰的メソッド
実装のアイデア
2つの二分木が等しいかどうかを判定する方法を使いますが、対称二分木はpノードの左の子とqノードの右の子、pノードの右の子とqノードの左の子が等しいかどうかを判定します。
時間の複雑さと空間の複雑さ
時間計算量: O(N)
空間計算量: O(N)
コード
bool isSameTree(struct TreeNode* p, struct TreeNode* q){
if(p==NULL&&q==NULL)
{
return true;
}
if(p==NULL||q==NULL)
{
return false;
}
if(p->val!=q->val)
{
return false;
}
//和判断两个二叉树相等类似,不过判断的是p结点的左孩子和q结点的右孩子是否相等
//还判断p结点的右孩子和q结点的左孩子是否相等,因为对称为镜像,所以需要这样比较。
return isSameTree(p->left,q->right)&&isSameTree(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root){
//如果二叉树为空,则返回true
if(root==NULL)
{
return true;
}
return isSameTree(root->left,root->right);
}
方法 2、
実装のアイデア
時間の複雑さと空間の複雑さ
コード