101. Symmetric Tree
解题思路:
递归的方法如下。分几种情况考虑,如果左子树和右子树都是空,那么返回true;如果不同时为空,返回false;如果都不为空,则
判断其值是否相等,不相等为false,相等再判断左子树的左子树与右子树的右子树,左子树的右子树与右子树的左子树。
bool isSymmetric(TreeNode* root) {
if (!root)
return true;
else
return judge(root->left, root->right);
}
bool judge(TreeNode* left, TreeNode* right) {
// left and right are null
if (!left && !right)
return true;
else if (left && !right || !left && right)
return false;
else {
if (left->val != right->val)
return false;
else
return judge(left->left, right->right) && judge(left->right, right->left);
}
}
非递归的方法
我想想再补上啊。
226. Invert Binary Tree
左右镜面旋转。递归方法。
TreeNode* invertTree(TreeNode* root) {
if (root) {
invertTree(root->left);
invertTree(root->right);
swap(root->left, root->right);
}
return root;
}