镜像二叉树

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; }};


以上是关于镜像二叉树的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的镜像

面试题:二叉树的镜像

二叉树的镜像-剑指Offer

剑指offer——二叉树的镜像

《剑指Offer——二叉树的镜像》代码

剑指offer-(16)二叉树的镜像