请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
- 子树对称、递归
- 左中右、右中左、DFS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class Solution { public: bool isSymmetrical(TreeNode* pRoot) { if (pRoot == nullptr) { return true; } else { stack<TreeNode*> s; s.push(pRoot->left); s.push(pRoot->right); while (s.size() > 1) { TreeNode *r, *l; r = s.top(); s.pop(); l = s.top(); s.pop(); if (r != nullptr && l != nullptr) { if (r->val != l->val) { return false; } s.push(l->left); s.push(r->right); s.push(l->right); s.push(r->left); } else if (!(l == nullptr && r == nullptr)) { return false; } } return true; } } };
|