226. 翻转二叉树
链接:代码随想录
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ //普通递归 class Solution { public: TreeNode* invertTree(TreeNode* root) { return Dfs(root); } TreeNode* Dfs(TreeNode *root) { if(root!=nullptr) { TreeNode *temp=root->left; root->left=Dfs(root->right); root->right=Dfs(temp); return root; } return nullptr; } };
101. 对称二叉树
链接:代码随想录
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { //试下递归 public: bool isSymmetric(TreeNode* root) { return helper(root->left,root->right); } bool helper(TreeNode *root1,TreeNode *root2) { if(root1==nullptr && root2==nullptr) { return true; } if(root1!=nullptr && root2!=nullptr) { if(root1->val==root2->val) { return helper(root1->left,root2->right)&&helper(root1->right,root2->left); } } return false; } };
100. 相同的树
链接:https://leetcode.cn/problems/same-tree/
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { /*https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E6%80%BB%E7%BB%93 代码随想录对称的树相关 */ public: bool isSameTree(TreeNode* p, TreeNode* q) { return helper(p,q); } bool helper(TreeNode *p,TreeNode *q) { if(p==nullptr && q==nullptr) { return true; } else if(p!=nullptr && q==nullptr) { return false; } else if(p==nullptr && q!=nullptr) { return false; } else{ if(p->val==q->val) { return helper(p->left,q->left)&&helper(p->right,q->right); } } return false; } };