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