1. 程式人生 > 實用技巧 >LeetCode101對稱二叉樹

LeetCode101對稱二叉樹

題目連結

https://leetcode-cn.com/problems/symmetric-tree/

題解

  • 我寫的
  • 遞迴解法
  • 具體方法見程式碼註釋
// Problem: LeetCode 101
// URL: https://leetcode-cn.com/problems/symmetric-tree/
// Tags: Tree Recursion DFS
// Difficulty: Easy

#include <iostream>
using namespace std;

struct TreeNode{
    int val;
    TreeNode* left;
    TreeNode* right;
};

class Solution{
private:
    // 判斷兩個樹s和t是否互相對稱
    // 有3個要求:
    // ①根節點值相等
    // ②s的左子樹和t的右子樹互相對稱
    // ③s的右子樹和t的左子樹互相對稱
    bool isSymmetric(TreeNode* s, TreeNode* t){
        if(s==nullptr && t==nullptr)
            return true;
        if(s==nullptr || t==nullptr)
            return false;
        if(s->val == t->val)
            return isSymmetric(s->left, t->right) && isSymmetric(s->right, t->left);
        return false;
    }
public:
    bool isSymmetric(TreeNode* root) {
        // 如果該樹為空,則為對稱的
        if(root==nullptr)
            return true;
        // 左子樹和右子樹對稱
        return isSymmetric(root->left, root->right);
    }
};

作者:@臭鹹魚

轉載請註明出處:https://www.cnblogs.com/chouxianyu/

歡迎討論和交流!