【101】Symmetric Tree
判断一棵树是不是对称。
题解:直接递归判断了,感觉和bfs没有什么强联系,当然如果你一定要用queue改写的话,勉强也能算bfs。
// 这个题目的重点是 比较对象是 左子树的左儿子和右子树的右儿子, 左子树的右儿子和右子树的左儿子。不要搞错。
// 直接中序遍历的话会有错的情况,最蠢的情况是数字标注改一改。。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 // 这个题目的重点是 比较对象是 左子树的左儿子和右子树的右儿子, 左子树的右儿子和右子树的左儿子。不要搞错。 11 // 直接中序遍历的话会有错的情况,最蠢的情况是数字标注改一改。。 12 class Solution { 13 public: 14 bool isSymmetric(TreeNode* left, TreeNode* right) { 15 if (left == NULL && right == NULL) {return true;} 16 if (left == NULL || right == NULL) {return false;} 17 return (left->val == right->val) && isSymmetric(left->left, right->right) && isSymmetric(left->right, right->left); 18 } 19 bool isSymmetric(TreeNode* root) { 20 if (!root) { 21 return true; 22 } 23 return isSymmetric(root->left, root->right); 24 } 25 };