剑指offer28:对称的二叉树(dfs)

tech2022-07-30  152

dfs走到底,递归检查树的右左,左右子树。

/** * 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) { if(!root) return true; else { return dfs(root->left,root -> right); } } bool dfs(TreeNode* root1 , TreeNode* root2){ if(root1 == nullptr && root2 == nullptr) return true; if(root1 == nullptr ||root2 == nullptr || root1 -> val != root2 -> val) return false; return dfs(root1 -> left,root2 -> right) && dfs(root1 -> right,root2->left); } };

dfs思想真的很棒。

最新回复(0)