镜像二叉树
Posted 编程der艺术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了镜像二叉树相关的知识,希望对你有一定的参考价值。
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3]
是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
/**
* 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) {
//中左右 == 中右左
stack<TreeNode*> stkLeftFirst,stkRightFirst;
stkLeftFirst.push(root);
stkRightFirst.push(root);
bool res = true;
TreeNode *leftNode, *rightNode;
while(!stkLeftFirst.empty()&&!stkRightFirst.empty())
{
leftNode = stkLeftFirst.top();
stkLeftFirst.pop();
rightNode = stkRightFirst.top();
stkRightFirst.pop();
res = res &
leftNode == nullptr ? rightNode == nullptr :
(rightNode != nullptr)&&(leftNode->val == rightNode->val);
if(!res)return res;
if(leftNode != nullptr && rightNode != nullptr)
{
stkLeftFirst.push(leftNode->right);
stkLeftFirst.push(leftNode->left);
stkRightFirst.push(rightNode->left);
stkRightFirst.push(rightNode->right);
}
}
return res;
}
};
以上是关于镜像二叉树的主要内容,如果未能解决你的问题,请参考以下文章