Iterative

bool isSymmetric(TreeNode* root) {

if(!root)

return true;

stack<TreeNode*> s;

s.push(root->left);

s.push(root->right);

TreeNode left, right;

while(!s.empty()){

left=s.top();

s.pop();

right=s.top();

s.pop();

if(!left&&!right) //剪枝

continue;

if(!left||!right)

return false;

if(left->val!=right->val)

return false;

s.push(left->left);

s.push(right->right);

s.push(left->right);

s.push(right->left);

}

return true;

}

Last updated

Was this helpful?