二叉树的对称dfs

经典例题,对称二叉树

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

代码如图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool compare(TreeNode* left, TreeNode* right){
if (left == NULL && right == NULL) return true;
else if(left == NULL || right==NULL) return false;
else if (left->val != right->val) return false;
return compare(left->left, right->right) && compare(left->right, right->left);
}

class Solution {
public:
bool isSymmetric(TreeNode* root) {
if (root == NULL) return true;
return compare(root->left, root->right);
}
};

这题也可以,反转二叉树的奇数层

https://leetcode.cn/problems/reverse-odd-levels-of-binary-tree/description/

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
TreeNode* reverseOddLevels(TreeNode* root) {
dfs(root->left, root->right, true);
return root;
}

void dfs(TreeNode *l, TreeNode *r, bool jud) {
if (l == nullptr) {
return;
}
if (jud) {
swap(l->val, r->val);
}
dfs(l->left, r->right, !jud);
dfs(l->right, r->left, !jud);
}
};

画个图

  • Copyrights © 2023-2024 Kano
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信